02 / 07SAAS · BARBERS & SALONSComing soon
Barber Booking System
Our own booking and business-management platform for barbers and hair salons: a calendar per staff member, appointments with conflict checks, customer, service and staff management, and role-based access. Every salon's data is kept separate at database level.
- What we did
- Multi-tenant SaaS architecture
- Calendar & booking engine
- Customer, service & staff management
- Roles & secure sign-in
- Technologies
- NestJSNext.jsTypeScriptPostgreSQL 16 (RLS)PrismaDocker
- Type
- SaaS · Our own product
01About the project
The brief
Barbers and hair salons often run their bookings across phone calls, paper diaries and chat messages. We wanted one system where every salon manages its calendar, staff, services and customers, while salons on the same platform can never, under any circumstances, see each other's data.
Our approach
We built it as a multi-tenant SaaS: every record belongs to one salon, and that separation is enforced by the database itself, not just by the application. The booking rules live in a single engine that is independent of the channel; today the web panel uses it, and later a bot or WhatsApp can use the same engine. The system is still in development.
02Key features
- 01
Daily calendar
The salon's day on one screen: appointments in time order with their status (planned, arrived, cancelled), and quick switching between days.
- 02
Double-booking check
If a staff member already has an appointment at that time, the system warns and lists the overlapping bookings. The salon can still choose to go ahead.
- 03
Price and duration are locked in
An appointment keeps the price and duration of its services as they were when it was booked. If prices change later, past appointments keep their original amount.
- 04
Staff, services and customers
Manager and staff roles, services with duration and price, customer records with phone number and notes. One appointment can hold several services and be assigned to a staff member later.
- 05
Data kept apart per salon
Each salon's data is separated at database level (row-level security); one salon can never reach another salon's records.
- 06
Secure sessions
Short-lived sign-in keys renew themselves safely, and if a stolen session key is reused the system detects it. The platform admin who creates salons signs in through a completely separate flow.
03Videos
Panel tour
Video coming soon
Booking flow
Video coming soon
On mobile
Video coming soon
04Screens
05Technology
Interface
- Next.js
- Salon management panel
- React 19 & TypeScript
- Type-safe panel components
- TanStack Query
- Data fetching and caching in the panel
- Tailwind CSS 4
- Panel styling and layout
Server & data
- NestJS
- Modular API: bookings, customers, staff
- PostgreSQL 16 (RLS)
- Row-level data separation per salon
- Prisma
- Database schema and queries
- JWT & Argon2
- Sessions and safely stored passwords
Infrastructure
- Docker
- Database environment
- pnpm monorepo
- API, panel and shared types in one repo
06Status
This project is in development. Thinking of something similar?








