Qaitless

Back to portfolio

Web development

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

Gallery