Skip to content

App Next.js (App Router) de réservation de créneaux avec back‑office admin. Auth NextAuth, PostgreSQL via Prisma, UI Material UI. Gestion des créneaux, réservations, utilisateurs et sessions/appareils

Notifications You must be signed in to change notification settings

Opineppes/reservation-project

Repository files navigation

Reservation Project — Booking slots + Admin

Stack

Problème : gérer des rendez-vous sans surbooking et sans friction côté client. Solution : une page publique de réservation avec un back-office admin sécurisé pour piloter les créneaux.

Features

  • Réservation publique avec validation des champs
  • Création et gestion des créneaux côté admin
  • Annulation de réservation avec libération du créneau
  • Authentification admin (NextAuth) + RBAC
  • Gestion des utilisateurs et des sessions
  • UI d’administration en Material UI

Tech stack

  • Next.js 16 (App Router)
  • React 19
  • Material UI 7
  • Prisma 7 + PostgreSQL 16
  • NextAuth v5 (Credentials)

Architecture (mini schéma)

src/
  app/
    (public)/     # pages publiques (login, booking)
    (private)/    # administration protégée
    (components)/ # composants partagés
  lib/
    db/dao/       # accès données
    auth.ts       # NextAuth
    permissions.ts
  generated/
    prisma/       # client Prisma
    zod/          # schémas Zod

OWNER (bootstrap admin)

Les comptes admin OWNER sont provisionnés via variables d’environnement + seed pour éviter un endpoint public de création d’admin. Les utilisateurs classiques sont ensuite gérés depuis l’interface d’administration.

Ce que j’ai appris / challenges

  • Concurrence de réservation : empêcher le double booking d’un même créneau
  • Sécurité admin : NextAuth + RBAC + contrôles côté serveur
  • Prisma : migrations, seed et structuration des accès DB

Roadmap V2

  • Emails de confirmation et d’annulation
  • Export iCal / Google Calendar
  • Page publique de disponibilités partageable

Local setup

  1. npm install
  2. Copier .env.example.env
  3. Choisir une option DB :

Option A (recommandée) : DB distante (Supabase/Neon)

  • DATABASE_URL=postgresql://...

Option B : PostgreSQL local via Docker

  • docker compose up -d postgres
  • DATABASE_URL=postgresql://postgres:postgres@localhost:5432/reservation_project?schema=public
  1. Initialiser la base :
  • npx prisma generate
  • npx prisma migrate deploy
  • npx prisma db seed
  1. Lancer :
  • npm run dev

About

App Next.js (App Router) de réservation de créneaux avec back‑office admin. Auth NextAuth, PostgreSQL via Prisma, UI Material UI. Gestion des créneaux, réservations, utilisateurs et sessions/appareils

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published