Chairtime — appointment booking and loyalty through LINE
A multi-shop booking platform for hair and nail salons, massage shops, spas, and clinics. Customers book themselves through LINE, and shops sign up and start on their own.
- Role
- Designed and built end to end, solo
- Period
- Aug 2026 – present
- Stack
- Next.jsTypeScriptPostgreSQLLINE Messaging APILINE LIFF

Our own product, from the database design to the payment page. It is live at chairtime.ngankhao.com with shops using it.
The problem
Most service shops take bookings over chat: answering customers one at a time, remembering which stylist is free, and living with double bookings and forgotten appointments. Most systems on the market ask customers to install a new app, which the customers of a small shop rarely do.
The hard part
Finding the right free time. A service like hair colouring uses the stylist in stages — apply, wait while it develops, rinse — and during the wait the stylist can serve someone else while the chair stays taken. The system splits each service into steps and works out which resources every step needs, including preparation and clean-up time, each stylist's own hours, leave, and shops that stay open past midnight.
Preventing double bookings. When two customers book the same slot at the same moment, the database decides, not application code — so bookings cannot overlap however many arrive at once.
Scope
- Customers book through LINE with nothing to install, and get a confirmation and a reminder before the appointment
- The shop's back office: a day calendar, walk-ins, services, staff, opening hours, customer history, and sales summaries
- Shops sign up and set everything up themselves, including connecting their own LINE Official Account step by step
- Each shop's data is separated at the database layer; no shop can see another's
- Subscription payment by PromptPay QR with automatic slip checking, and receipts issued through our own accounting system
- Points, membership tiers, and rewards, ready to switch on when a shop wants them




