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
Big screenshot: the main screen

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

Screenshot: Pick a service
1. Pick a service

Prices and durations come from the database.

Screenshot: Choose a free time
2. Choose a free time

Taken times are crossed out, so nobody double-books.

Screenshot: The owner confirms it
3. The owner confirms it

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.]

Next project: Service explorer (React)See it →