Qaitless
Micro-businesses with predictable service times (barbershops, salons, repair shops, clinics) still manage their client flow by hand: walk-in queues, phone bookings, no-shows and days that are either overbooked or half empty.
Qaitless gives each business a public booking page, a dashboard with a live queue, and daily capacity planned from staff availability and service length. Late arrivals and no-shows are reordered automatically, and an end-of-day process reschedules whatever is left.
Architecture: a multi-tenant NestJS 11 + MongoDB API where every query is scoped by companyId, split into feature modules (auth, companies, employees, appointments, slots, queue, analytics, scheduler, events). Three separate auth paths: slug-based public booking, JWT for the dashboard and an x-api-key header for integrations. The live queue reaches the dashboard through Server-Sent Events fed by an event emitter, and cron jobs handle auto-rescheduling and end-of-day processing. The React 19 client is organized by feature, with TanStack Query (centralized query keys) for server state, React Hook Form + Zod for forms, and types that mirror the backend DTOs.
Best practices: Helmet, rate limiting and bcrypt; class-validator DTOs with custom guards, filters and interceptors; UTC-normalized dates; e2e suites covering multi-tenant isolation, queue management, auto-rescheduling and public booking; CI with lint, Prettier, unit and e2e tests and build. On the client: a semantic design-token system with no hard-coded colors or arbitrary Tailwind values, EN/FR/ES translations, consistent loading, error and empty states, MSW mocks and Playwright.
Stack
- React 19
- TypeScript
- Vite
- Tailwind CSS
- TanStack Query
- React Hook Form
- Zod
- NestJS 11
- MongoDB
- Docker