
The problem
Booking a private chef locally was fragmented. There was no single place to browse verified chefs, check real availability and pay online.
What I built
A two-sided marketplace with three roles: customers, chefs and admins.
- Chef profiles with live availability, so a booking never lands on a slot the chef has already filled.
- A booking flow with online payment, and a dashboard for each role.
- An admin panel to run the marketplace day to day.
How it works underneath
- Next.js front end talking to a NestJS REST API, with PostgreSQL on Supabase (15+ tables).
- Row-level security, role-based access and OTP login, so each person only sees their own data.
- Live Razorpay payments with verified webhooks and tiered refunds.
- Deployed on Cloudflare Pages and Railway, with Sentry for errors and uptime checks.
The hard day
When a Redis security incident hit production, I handled it on my own: I rotated every credential and moved to a new provider with no downtime.
Result
CookOnCall is live and takes real payments. I run it in production.