Case study · Next.js
Mawid: online booking for small businesses
Customers pick a service and book a time. The business manages bookings, services and opening hours from a protected dashboard.
- Role
- Design + full-stack build
- Built in
- Weeks 6–8 at MilcodeUni
- Stack
- Next.js · TypeScript · Supabase · Vercel
- Status
- Live
The problem
Many small businesses take bookings by phone or WhatsApp. Messages get lost, two people book the same slot, and the owner has no overview of the week.
Who it's for
Owners of small service businesses (barbers, salons, coaches) and their customers, mostly on phones.
The solution
One booking link per business. Customers see only free times and send a request; the owner confirms it and manages everything from a dashboard.
What I did
- Designed the screens and the database (businesses, services, opening hours, bookings)
- Built the public booking flow with server-side validation
- Added sign-up, sign-in and a protected dashboard with Supabase Auth
- Wrote Row Level Security so each owner only sees their own data
- Deployed to Vercel and documented the setup
How it works
Prices and durations come from the database.
Taken times are crossed out, so nobody double-books.
New requests appear in the dashboard straight away.
Key decisions
- Stored dates and times as the shop's local time to avoid timezone bugs
- Checked overlaps in a server action, plus a unique index as a safety net
- Exposed taken times through a view, so customers never see other people's names
Challenges
[In your words: the bug or concept that blocked you, and how you solved it.]
Outcome
[What works now, who tested it, and what you learned.]
What I'd add next
[One or two real next steps, e.g. WhatsApp reminders the day before.]