Une application web complète pour gérer les réservations d'un restaurant, développée avec React/TypeScript, Express et SQLite.
- Formulaire de réservation avec validation
- Champs requis : nom, email, téléphone, nombre de personnes, date (jj-mm-aaaa), heure
- Validation stricte du format de date jj-mm-aaaa
- Design responsive avec thème restaurant
- Accès protégé par mot de passe (défaut:
admin123) - Liste complète des réservations
- Suppression des réservations
- Interface d'administration intuitive
- Frontend: React 18 + TypeScript + Tailwind CSS + shadcn/ui
- Backend: Node.js + Express 5 + TypeScript
- Base de données: SQLite + Kysely (Query Builder)
- Routing: React Router DOM
- Build: Vite
- Node.js 18+
- npm
# Cloner le projet
git clone [votre-repo]
cd restaurant-reservation
# Installer les dépendances
npm install# Démarrer le serveur de développement (frontend + backend)
npm run startL'application sera accessible sur :
- Frontend : http://localhost:3000
- Backend API : http://localhost:3001
# Créer le build de production
npm run build
# Démarrer en production
NODE_ENV=production node dist/server/index.jsCREATE TABLE reservations (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT NOT NULL,
phone TEXT NOT NULL,
guests INTEGER NOT NULL,
date TEXT NOT NULL, -- Format: jj-mm-aaaa
time TEXT NOT NULL, -- Format: HH:MM
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);POST /api/reservations- Créer une réservation
POST /api/admin/login- Authentification adminPOST /api/admin/reservations- Lister les réservations (avec mot de passe)DELETE /api/admin/reservations/:id- Supprimer une réservation
# Optionnel - Port du serveur (défaut: 3001)
PORT=3001
# Optionnel - Mot de passe admin (défaut: admin123)
ADMIN_PASSWORD=votre_mot_de_passe_securise
# Optionnel - Répertoire de données (défaut: ./data)
DATA_DIRECTORY=/chemin/vers/donnees- Requis : jj-mm-aaaa (ex: 18-08-2025)
- Validation côté client et serveur
- Vérification que la date n'est pas dans le passé
- Email valide requis
- Téléphone requis
- Nombre de personnes : 1-20
- Tous les champs sont obligatoires
- Mot de passe admin requis pour toutes les opérations d'administration
- Validation stricte des entrées utilisateur
- Protection contre l'injection SQL (Kysely)
- Nettoyage des données entrantes
restaurant-reservation/
├── client/ # Frontend React
│ ├── src/
│ │ ├── components/ # Composants réutilisables
│ │ ├── pages/ # Pages de l'application
│ │ └── lib/ # Utilitaires
├── server/ # Backend Express
│ ├── database/ # Configuration base de données
│ └── index.ts # Serveur principal
├── data/ # Base de données SQLite
└── README.md
- Aller sur la page d'accueil
- Remplir le formulaire avec les informations requises
- Important : La date doit être au format jj-mm-aaaa
- Sélectionner l'heure parmi les créneaux disponibles
- Cliquer sur "Réserver"
- Aller sur
/admin - Entrer le mot de passe administrateur (défaut:
admin123) - Consulter la liste des réservations
- Supprimer les réservations si nécessaire
Pour toute question ou problème, vérifiez :
- Que Node.js 18+ est installé
- Que toutes les dépendances sont installées (
npm install) - Que le port 3001 (backend) et 3000 (frontend) sont disponibles
- Les logs du serveur pour plus de détails
MIT License - Libre d'utilisation pour projets personnels et commerciaux.