Skip to content
FR
All projects
Live

Hacienda Malinche

Mexican restaurant & mezcal bar in Paris: trilingual site, in-house table booking and a modular back office.

Visit the site

Overview

Website for a Mexican restaurant and mezcal bar in Paris’ Sentier. Next.js 14 (App Router, server actions) in FR / ES / EN, Supabase (Postgres + Storage, server-only access), Resend emails and Vercel Cron. Its own reservation system avoids overbooking across zones (dining room, cellar, terrace), handles events with reminders, and sits beside a PIN-role back office for menu, customers, opening hours and media — plus a CLI with API tokens.

Key technical specs

  • Next.js 14 (App Router, server actions) in FR / ES / EN with next-intl and an i18n completeness check.
  • Ten self-contained modules (reservations, events, menu, CRM, hours, media, inbox, settings, CLI, admin), each with its own SQL, server code, panel and tests.
  • No overbooking: bookings take a database advisory lock and check peak seat occupancy over the whole sitting in one transaction — verified with a 20-way race test.
  • Supabase with RLS on and no policies: only the server can read or write, checked automatically for every table, view and function.
  • PIN back office with roles, lockout after repeated failures (fails closed) and signed httpOnly 8-hour sessions.
  • Transactional emails with Resend (confirmations, reminders, cancellations, invitations) and RFC 8058 one-click unsubscribe; two daily Vercel Cron jobs.
  • hm CLI with 256-bit hashed, scoped, revocable tokens that reuses the panel's own service functions — no raw SQL.

Menu

“Petite carte. Grandes saveurs.” — a short menu with category tabs (starters, tostadas & tacos, dessert, cocktails, beers), all editable from the back office.

Reservations

Book online in two minutes through the in-house system (TheFork as a fallback), with opening hours, group bookings and directions alongside.