LeBonResto: Restaurant Marketplace
My own restaurant marketplace for Morocco: customers find and book restaurants, owners manage their listing, and admins run the platform.

Overview
LeBonResto helps customers discover restaurants across Moroccan cities, browse menus and photos, and book a table. I built it as three Next.js applications (customer web app, owner dashboard, admin panel) on a NestJS API with Prisma and PostgreSQL, plus a separate marketing site for restaurants and partners. The project started as a WordPress plugin with Leaflet maps, then became a NestJS API on Supabase, before reaching its current full-stack version.
The problem
Restaurants in Morocco often have no proper online page, and customers struggle to compare places by city, cuisine or features and to book without calling. Owners also need one place to keep menus, opening hours, events and reservations up to date.
What I built
I built a NestJS API organised in modules (restaurants, menus and dishes, opening hours, events, reservations, feedback, saved restaurants, notifications, analytics) with Prisma on PostgreSQL, Redis caching and MinIO for images. Customers, owners and admins each have their own authentication (JWT, refresh tokens, OTP, Google sign-in for customers). The customer app offers filters by city, category and tags, a Leaflet map view, restaurant pages with reviews and a step-by-step reservation flow; owners and admins get dashboards with charts. Reservation events trigger email and WhatsApp notifications through Twilio, and a scheduled job handles automatic confirmation.
Results
- Three web apps (customer, owner, admin) sharing one API and a shared UI package
- Playwright smoke and accessibility tests and a Lighthouse CI workflow on GitHub Actions
- Production stack with Docker Compose and Nginx on a VM, with database and media backup and restore scripts
- Marketing site with restaurant and investor lead forms, blog, pricing and sitemap
- Project history: WordPress plugin, then a Supabase API, then the current NestJS and Prisma platform
Highlights
- Search and filters by city, category and tags, with a map view
- Multi-step table reservation flow with status tracking
- Owner dashboard: menus, dishes, photos, opening hours, events and analytics
- Admin panel: moderation of restaurants and owners, audit logs, notifications and settings
- WhatsApp and email notifications for reservations
- SEO basics: restaurant JSON-LD, sitemap and robots


