Owner login, the bookings dashboard and password reset

About 2.5 hours, best as two sittings (Parts 1–5, then Parts 6–10)You need: your project in Cursor, the Supabase and Vercel dashboards with the Supabase MCP, your password manager, your phone, and adjoas-kitchen (to copy four proven files)
This video is in the full courseGet the course to watch every video and read every lesson in full. GHS 399, paid once.Get the course · GHS 399
Video · 20:29
Goal

Create the owner's account by hand, add a login protected by Turnstile, lock /admin in layers with proxy.ts, requireOwner() and owner-only RLS, build a phone-first dashboard where the owner confirms, completes and cancels bookings, add the safe password reset from Lesson 10.7, and prove every lock from the outside.

Why this matters

Right now bookings land in a table that only you can see, in the Supabase dashboard. A salon owner will never open Supabase. She needs a page on her phone, between clients, that shows today's and tomorrow's requests and lets her tap Confirm after she's messaged the customer.

That page holds every customer's name and phone number, so it's the most protected part of the site. You built the protection for Adjoa in Module 9 and tightened it in Module 10. It's the same here, in the same layers:

Four locks in a row protect the salon's admin: the proxy, the page's requireOwner(), every admin Server Action, and Supabase RLS plus grants. Door 1: proxy.ts (the door) no session → /login Door 2: The page: requireOwner() (the room) session must be OWNER_USER_ID Door 3: Every admin Server Action: requireOwner() (the drawer) Door 4: Supabase RLS + grants (the safe) select and update(status) only for OWNER_USER_ID Signed out Signed in, not the owner a separate small door: /login + Turnstile /forgot-password + Turnstile → /auth/confirm → /admin/password the owner's phone Efua · Silk press Confirm Akosua · Braids Mark as done Ama · Twists Cancel Any one lock can fail. All four failing at once is what you prevent.

You'll copy the generic parts from Adjoa's Kitchen (the session helper, the door, the owner check and the reset link handler) and build the business-specific pages by prompt, from business.ts.

In the full lesson

  1. The idea in plain English
  2. Do it
  3. Check it worked
  4. Understand what AI wrote
  5. Quick check
  6. What you can do now
Stage 2 · Make it workYou’ve seen the why. The how is in the course.

The step-by-step, the prompt to copy, the video and the check-it-worked list, for every lesson in all 15 modules. GHS 399 ($40), paid once by mobile money or card, yours to keep.

Get the course · GHS 399See what’s inside
Already have the course? Open the full lesson