D&D Barber & Academy
- Client
- D&D Barber & Academy
- Industry
- Vocational training & bookings
- Year
- 2026
A London barber shop and training academy in one site: course enrolment with flexible payment, haircut services and prices, a suitability quiz, and the admin behind both sides of the business.
12
Weeks from no experience to job-ready
2
Businesses served by one codebase
13
Tables behind courses and enrolment
What it covers
- Course catalogue & enrolment
- Flexible payment plans
- Suitability quiz
- Haircut services & prices
- Free haircut campaign
- Enquiries & contact
- Admin dashboard
Two businesses, two audiences
A barber shop sells a haircut this week. An academy sells a career change over twelve weeks. They need different pages, different calls to action and different funnels, but they share a brand, a location and an admin.
Enrolment is a decision, not a purchase
Nobody spends hundreds on a course from a price list alone, so the enrolment path carries the things people actually weigh: how long until they are job-ready, when they touch a real client, what the deposit is, and whether the payment plan involves a credit check. A quiz exists for people who are not sure yet.
The shop side stays simple
Services and prices, and a way to get in touch. The shop does not need a booking engine to sell a haircut; it needs to be found and to be clear.
How it was built
- Framework
SvelteKit
Server load functions, form actions and endpoints; SSR by default.
Svelte 5
Runes for reactivity ($state, $derived, $effect).
- Language
TypeScript
Strict mode across app and server code.
- Data
MySQL
Primary datastore.
Drizzle Kit
Committed SQL migrations rather than push-to-prod diffing.
Drizzle ORM
Typed schema and queries, with migrations generated from the schema.
- Auth
Better Auth
Session-based auth with server-side verification.
- Forms
Superforms
Progressive-enhancement forms with server-side validation.
Zod
One schema validating both client and server.
- UI
TanStack Table
Sorting, filtering and pagination for admin tables.
Bits UI
Headless primitives behind the component library.
Dark mode
System-aware theme switching.
Lucide
Icon set.
Embla
Carousels.
Tailwind CSS
Utility-first styling with a project design token layer.
- Reporting
jsPDF
Server-side PDF generation for reports and receipts.
jsPDF AutoTable
Tabular report export.
- Payments
Stripe
Card payments.
- Infrastructure
Nodemailer
Transactional email over SMTP.
Inside the system