The Challenge
A local barber was tired of managing appointments through DMs, phone calls, and the occasional no-show. They needed a system that:
- Let regular clients book quickly
- Gave control over who could book (no random time-wasters)
- Worked seamlessly on mobile
- Didn't require expensive monthly subscription fees
Off-the-shelf booking platforms either cost too much per month or didn't offer the approval workflow they wanted.
The Approach
We built a custom booking system using SvelteKit — lightweight, fast, and perfect for this kind of focused application.
The key insight: client approval
Not everyone who wants to book is a genuine client. The system includes an approval workflow:
- New clients register with basic details
- Admin reviews and approves (or rejects)
- Only approved clients can book appointments
- Regulars can book instantly
This simple gate eliminates most time-wasters while keeping the booking experience smooth for legitimate clients.
Core Features
Client Experience
- Simple registration — Name, phone, basic info
- Quick booking — Pick a date, pick a time, done
- Booking history — See past and upcoming appointments
- Mobile-optimised — Designed for phone screens first
Admin Dashboard
- Client management — Approve, view, or remove clients
- Booking overview — See the day's appointments at a glance
- Availability control — Set working hours and block out time
- Booking management — Confirm, reschedule, or cancel appointments
Technical Implementation
Route Structure
/ → Landing page with sign in/register /register → New client registration /auth/login → Returning client login /dashboard → Client booking interface /dashboard/book → Appointment selection /dashboard/bookings → Booking history /admin → Admin dashboard
Why SvelteKit?
- Performance: Minimal JavaScript shipped to client
- Simplicity: File-based routing, intuitive data loading
- Flexibility: Server-side or client-side rendering as needed
- Developer experience: Clean syntax, fast iteration
Design System
Built with shadcn-svelte components for consistency:
- Clean card-based layouts
- Clear typography hierarchy
- Accessible form controls
- Responsive grid system
The Result
The barber now has full control over their bookings. Clients can self-serve appointments without back-and-forth messaging. The approval system filters out non-serious enquiries.
Most importantly: no monthly subscription fees. One-time build, hosting costs only.
What This Demonstrates
Not every business needs a complex, feature-heavy platform. Sometimes the right solution is a focused application that does one thing really well.
This booking system handles:
- Registration and authentication
- Approval workflows
- Appointment scheduling
- Basic admin functions
And nothing else. No bloat. No unused features. Just a tool that solves a specific problem.
Tech Stack
- Framework: SvelteKit 2
- UI Components: shadcn-svelte
- Styling: Tailwind CSS
- Authentication: Custom session-based auth
- Database: Server-side persistence
- Deployment: Cloudflare Workers