Skip to content

Front Desk for a Busy Barbershop

2026

Live Demo

BookingPro

A front desk for a four-chair barbershop: the day's calendar by chair, a to-do list of requests and payments beside it, and a three-step booking page for customers on their phones.

Role
Design and full-stack development
Screens
Day and week calendars, phone booking + 6 admin
Stack
Next.js · Prisma · PostgreSQL
Data
Fictional shop · 1,100 customers

The demo login is prefilled, so press Enter dashboard. Try dragging a booking or booking free time. The customer booking page is at bookingpro.cjv.app/book.

bookingpro.cjv.app
BookingPro interface

Recorded from a local demo buildFictional data only

03 — Story

The problem.

The first version looked like a generic dashboard: charts, a stock photo and an empty demo day. It did not answer the desk's real questions: who is next, who still owes money, and where can a walk-in fit?

Built for
Barbershops, salons and other appointment businesses where one person runs the desk for several chairs.

What I built.

I redesigned BookingPro around that desk, the way real salon software works. The Day view is the calendar: one column per chair, the time now, and what is paid and what is still to pay. One panel beside it is a plain to-do list: online requests, payments, who is arriving, and a regular who could fill free time. Staff can drag a booking to another time or chair, book into free time or take a payment in one click, and every change can be undone.

  • 01

    Day Calendar

    Every chair by barber with photos, a live now line, bookings in quiet service colours, and what is paid or still to pay.

  • 02

    Drag to Move

    Drag a booking to a new time or chair. A preview shows the new time and whether the chair is free, and the server checks it again.

  • 03

    Book Free Time

    Click free time, then pick a service that fits, a start time and a customer, or a regular who is due a visit.

  • 04

    To Do

    Online requests to accept, payments to take and walk-ins to seat, each one click from done, with Undo.

  • 05

    Phone Booking

    Customers book in three steps: a service, a real free time with the barber, and a request the desk accepts.

  • 06

    Tested and Strict

    Unit and Playwright tests cover the calendar rules and the main journeys, under a strict Content Security Policy with no inline styles.

04 — Screens

Screens that matter.

The main view, the deeper work screens, and the handoff or customer-facing state. Select any screen to see it full size.

01 / 04

Day

The Day view mid-afternoon: four barbers, who is in each chair now, what is paid and what is still to pay, with requests, arrivals and a gap to fill in the to-do list.

02 / 04

Drag to Move

Moving a 75-minute booking to free time in another chair. The preview shows the new time and turns red when the chair is not free.

03 / 04

Book Free Time

Clicking free time opens a new booking beside the calendar: services that fit, start times, and regulars who are due a visit, with search by name or phone digits.

04 / 04

Phone Booking

The customer's side: a real free time with the barber who is free, then a request that lands in the desk's to-do list.

01 / 04Day

BookingPro: Day

The Day view mid-afternoon: four barbers, who is in each chair now, what is paid and what is still to pay, with requests, arrivals and a gap to fill in the to-do list.

05 — Under the hood

How it fits together.

  1. 01

    Browser

    Day calendar and phone booking page

  2. 02

    Next.js App Router

    React · TypeScript · Tailwind CSS

  3. 03

    Route handlers

    Zod validation · one shared slot check

  4. 04

    PostgreSQL

    Through Prisma · fictional shop data

Docker container on self-hosted CoolifyEvery move, booking and payment goes through the same slot check on the server, and each one can be undone.

Approach

  1. 01

    Audited the live demo, listed what made it read as a template, and wrote a short design brief in the repository.

  2. 02

    Redesigned it twice. The first pass still looked AI-made, so the second follows real salon software: the day's calendar fills the screen, one column per chair, with a plain to-do list beside it, in burnt orange on warm stone with a graphite dark mode.

  3. 03

    Made the calendar interactive: drag to move, book free time, take payment, accept or decline, each with Undo and each checked again on the server.

  4. 04

    Generated fictional data around the current day, with an optional daily reset, so the demo shows a working shop with real gaps, requests and payments.

Build notes

Project Type
Front desk and booking demo
Primary Workflow
Online request to accepted booking to paid
Data Mode
PostgreSQL with a fictional shop generated around the current day
Deployment
Docker and self-hosted Coolify

Stack

Frontend

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS

Backend

  • Next.js Route Handlers
  • Prisma
  • Zod

Data

  • PostgreSQL
  • Generated Demo Data

Testing

  • Playwright
  • node:test

Infra

  • Docker
  • Coolify

06 — Next project

Rota and Staff Planning

StaffWise

Read the case study

Interested?

Want something like BookingPro for your team?

Get in touch