$ cd ./projects/comme-un-bistrot/
← cd ../ (retour aux projets)

$ cat comme-un-bistrot.md

Comme 1 Bistrot

Site d'un bistrot avec réservation en ligne et dashboard de gestion : carte, photos, avis, salle, tables, horaires et fermetures. Connexion admin par code à usage unique.

date: 22/07/2026

#vitrine #réservation #back-office

stack: Next.js · React · TypeScript · PostgreSQL · Prisma · Docker

> live
$ cat README.md

Site vitrine d’un bistrot, adossé à un dashboard de gestion pour que l’équipe mette à jour elle-même la carte, les événements et les infos pratiques.

Réservation

  • Page de réservation publique, disponibilités calculées à partir de la vraie capacité de la salle : services, gabarits de tables, jours d’ouverture et fermetures.
  • Cahier de la salle dans le dashboard, avec plan de salle dessiné (grille, chevauchements, occupation) et statistiques de la semaine.
  • Confirmations par courriel via Brevo, jamais bloquantes pour la réservation.
  • Limite de demandes par visiteur.

Dashboard

  • Contenu en quatre onglets : carte, photos, réglages et avis.
  • Photos téléversées servies hors de public/.
  • Connexion admin sans mot de passe : code à usage unique envoyé par courriel à une adresse autorisée.

Qualité

  • Logique métier pure (disponibilités, fuseau de Paris, mise en mots des horaires, statistiques) testée sans base ni navigateur.
  • Fiche schema.org pour les moteurs de recherche.

Stack Next.js + PostgreSQL + Prisma, design system en CSS vanilla, en ligne sur bistrot.gautierchuinard.com (Docker, auto-hébergé).

Showcase site for a bistro, backed by a management dashboard so the team can update the menu, events and practical info themselves.

Booking

  • Public booking page with availability computed from the room’s real capacity: services, table templates, opening days and closures.
  • Room logbook in the dashboard, with a drawn floor plan (grid, overlaps, occupancy) and weekly statistics.
  • Email confirmations sent through Brevo, never blocking the booking.
  • Per-visitor rate limit on requests.

Dashboard

  • Content in four tabs: menu, photos, settings and reviews.
  • Uploaded photos served outside public/.
  • Passwordless admin sign-in: a one-time code sent by email to an allow-listed address.

Quality

  • Pure business logic (availability, Paris time zone, opening hours wording, statistics) tested without a database or browser.
  • schema.org listing for search engines.

Stack Next.js + PostgreSQL + Prisma, plain CSS design system, online at bistrot.gautierchuinard.com (Docker, self-hosted).