Solution complète de réservation en ligne pour restaurants
Application Flutter moderne avec backend Node.js, authentification OAuth2, paiements Stripe, et interface d'administration complète.
TechPlus est une solution complète de réservation en ligne pour restaurants, développée avec Flutter (frontend) et Node.js (backend). Le système permet aux clients de réserver des tables en ligne 24/7, tandis que les administrateurs peuvent gérer efficacement leurs réservations et analyser leurs performances.
- ✅ Backend : 100% opérationnel avec API complète
- ✅ Frontend : 100% fonctionnel avec interface responsive
- ✅ Authentification : JWT + OAuth2 (Google, Facebook)
- ✅ Base de données : PostgreSQL avec données de test
- ✅ Cache : Redis configuré et fonctionnel
- ✅ Paiements : Stripe intégré
- ✅ Notifications : Templates email personnalisés
- ✅ Tests : Suite complète implémentée
- ✅ Sécurité : Configuration avancée
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Backend API │ │ Base de │
│ Flutter │◄──►│ Node.js │◄──►│ Données │
│ │ │ TypeScript │ │ PostgreSQL │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ App Public │ │ Cache │ │ Notifications │
│ + Admin │ │ Redis 7.4.1 │ │ Email + SMS │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- 🏠 Vitrine Restaurant : Présentation des services et menu
- 📅 Réservation en ligne : Interface intuitive 24/7
- 🌍 Multilingue : Français et Anglais
- 📱 Responsive : Mobile, tablette, desktop
- 📊 Dashboard : Statistiques en temps réel
- 🗓️ Gestion des réservations : Vue calendrier et liste
- 🪑 Gestion des tables : Configuration flexible
- 📋 Gestion du menu : CRUD complet avec images
- 📈 Analytics : Rapports et métriques
- 🔐 Authentification : OAuth2 (Google/Facebook) + JWT
- 📧 Notifications : Email et SMS automatiques
- ⚡ Cache intelligent : Performance optimisée
- 🔒 Sécurité : Validation, sanitization, rate limiting
- Flutter 3.35.4 : Framework multiplateforme
- Dart 3.9.2 : Langage de programmation
- Riverpod : Gestion d'état moderne
- GoRouter : Navigation déclarative
- Dio : Client HTTP
- Intl : Internationalisation
- Node.js 24.8.0 : Runtime JavaScript
- TypeScript 5.9.2 : Langage typé
- Express.js 5.1.0 : Framework web
- Prisma 6.16.2 : ORM moderne
- PostgreSQL 17.6 : Base de données
- Redis 7.0.15 : Cache et sessions
- JWT : Authentification sécurisée
- Stripe 18.5.0 : Paiements intégrés
TechPlus/
├── frontend/ # Application Flutter
│ ├── lib/
│ │ ├── core/ # Configuration, constants, utils
│ │ ├── features/ # Fonctionnalités métier
│ │ │ ├── auth/ # Authentification
│ │ │ ├── reservation/ # Réservations
│ │ │ ├── menu/ # Menu restaurant
│ │ │ └── admin/ # Interface admin
│ │ ├── shared/ # Composants partagés
│ │ └── main.dart
│ ├── assets/ # Images, traductions
│ └── pubspec.yaml
├── backend/ # API Node.js
│ ├── src/
│ │ ├── controllers/ # Contrôleurs API
│ │ ├── services/ # Logique métier
│ │ ├── models/ # Modèles Prisma
│ │ ├── middleware/ # Middlewares Express
│ │ ├── routes/ # Routes API
│ │ └── utils/ # Utilitaires
│ ├── prisma/ # Schémas et migrations
│ └── package.json
├── docs/ # Documentation
└── docker/ # Configuration Docker
- Flutter >= 3.35.4
- Dart >= 3.9.2
- Node.js >= 24.8.0
- npm >= 11.6.0
- PostgreSQL >= 17.6
- Redis >= 7.0.15
- TypeScript >= 5.9.2
- Cloner le projet
git clone <repository-url>
cd TechPlus
- Installation complète
npm run install:all
- Configuration de la base de données
cd backend
npm run db:generate
npm run db:migrate
npm run db:seed
- Développement
# Terminal 1 - Backend
cd backend && npm run dev
# Terminal 2 - Frontend
cd frontend && flutter run
- Admin :
admin@techplus-restaurant.com
/admin123
- Client :
client@example.com
/client123
- API Backend :
http://localhost:3000
- Health Check :
http://localhost:3000/health
- Frontend Web :
http://localhost:3000
(après build) - Frontend Mobile : Via émulateur ou device physique
// Dans frontend/lib/core/constants/app_constants.dart
static const String baseUrl = 'http://localhost:3000';
// Pour émulateur Android : 'http://172.20.0.1:3000'
npm run install:all # Installe toutes les dépendances (backend + frontend)
npm run clean # Nettoie les builds (backend + frontend)
npm run dev # Lance backend + frontend en mode développement
npm run dev:backend # Lance uniquement le backend
npm run dev:frontend # Lance uniquement le frontend
npm run test # Lance tous les tests (backend + frontend)
npm run test:coverage # Tests avec rapports de couverture
npm run test:backend # Tests backend uniquement
npm run test:frontend # Tests frontend uniquement
npm run lint # Linting backend + frontend
npm run format # Formatage backend + frontend
npm run format:check # Vérification du formatage
npm run build # Build production (backend + frontend)
npm run build:backend # Build backend uniquement
npm run build:frontend # Build frontend uniquement
cd backend
# Développement
npm run dev # Mode développement avec hot reload
npm run dev:watch # Mode développement avec watch
# Tests
npm test # Tests unitaires et intégration
npm run test:watch # Tests en mode watch
npm run test:coverage # Tests avec couverture
# Qualité du code
npm run lint # ESLint
npm run lint:fix # ESLint avec correction automatique
npm run format # Prettier
npm run format:check # Vérification Prettier
npm run type-check # Vérification TypeScript
# Base de données
npm run db:seed # Seeds de données
npm run db:reset # Reset de la base de données
npm run db:studio # Interface Prisma Studio
# Build
npm run build # Build TypeScript
npm run start # Démarrage production
npm run clean # Nettoyage des builds
cd frontend
# Développement
flutter run # Lance l'application
flutter run -d web # Lance sur le web
flutter run -d chrome # Lance sur Chrome
# Tests
flutter test # Tests unitaires et widgets
flutter test --coverage # Tests avec couverture
# Qualité du code
flutter analyze # Analyse statique
dart format . # Formatage du code
dart format --set-exit-if-changed . # Vérification formatage
# Build
flutter build web # Build web
flutter build apk # Build Android APK
flutter build ios # Build iOS
flutter clean # Nettoyage
- Pre-commit : Linting + formatage automatique
- Pre-push : Tests complets avant push
- Commit-msg : Validation du format des messages
- Backend : ESLint + Prettier + TypeScript
- Frontend : Flutter analyze + dart format
- Automatique : Correction automatique avec lint-staged
- Backend : Jest avec TypeScript
- Frontend : Flutter test
- Couverture : Rapports HTML, JSON, LCOV
- Seuils : 80% minimum (configurable)
- Flutter :
3.35.4
(stable) - Dart :
3.9.2
(stable) - Node.js :
24.8.0
(LTS) - npm :
11.6.0
(stable) - TypeScript :
5.9.2
(stable) - PostgreSQL :
17.6
(stable) - Prisma :
6.16.2
(stable) - Redis :
7.0.15
(stable) - Express.js :
5.1.0
(stable) - Stripe :
18.5.0
(stable)
📋 Documentation complète : Voir docs/development/dependencies-specifications.md pour la liste complète des dépendances et leurs versions.
- Architecture de base
- Spécifications techniques
- Documentation complète
- Configuration backend (Node.js + TypeScript)
- Configuration frontend (Flutter + Riverpod)
- Base de données (PostgreSQL + Prisma)
- Cache et sessions (Redis)
- Authentification JWT + OAuth2
- Notifications email (Templates personnalisés)
- Paiements (Stripe intégré)
- Tests automatisés (Jest + Flutter Test)
- CI/CD (GitHub Actions)
- Qualité du code (Husky + ESLint + Prettier)
- APIs complètes et fonctionnelles
- Système d'authentification robuste
- Gestion des réservations de base
- Intégrations Stripe et email
- Tests automatisés complets
- Sécurité avancée (Helmet, CORS, Rate Limiting)
- Monitoring et logging
- Interface publique complète
- Système de réservation fonctionnel
- Authentification utilisateur
- Design responsive (Mobile, tablette, desktop)
- Internationalisation (FR/EN)
- Tests automatisés
- Interface d'administration complète
- Gestion avancée des réservations
- Analytics et reporting
- Configuration complète
- Tests automatisés
- Dashboard avec métriques en temps réel
- Tests unitaires et d'intégration
- Performance optimisée
- Sécurité renforcée
- Tests end-to-end complets
- Monitoring avancé
- Déploiement en production
- Monitoring et maintenance
- Formation des utilisateurs
Le projet utilise Husky pour automatiser la qualité du code :
- Pre-commit : Linting + formatage automatique
- Pre-push : Tests complets avant push
- Commit-msg : Validation du format des messages
<type>(<scope>): <description>
# Types autorisés
feat: nouvelle fonctionnalité
fix: correction de bug
docs: documentation
style: formatage
refactor: refactoring
test: tests
chore: tâches de maintenance
# Exemples
feat(auth): add OAuth2 login
fix(reservation): correct date validation
docs(readme): update installation guide
- Backend : ESLint + Prettier + TypeScript strict
- Frontend : Flutter analyze + dart format
- Tests : Couverture minimum 80%
- Documentation : JSDoc pour le backend, DartDoc pour le frontend
Ce projet suit les standards de développement modernes et est conçu pour être maintenable et évolutif.
- Fork le projet
- Créer une branche feature (
git checkout -b feature/nouvelle-fonctionnalite
) - Commiter les changements (
git commit -m 'feat: add nouvelle fonctionnalité'
) - Push vers la branche (
git push origin feature/nouvelle-fonctionnalite
) - Ouvrir une Pull Request
- Respecter les conventions de nommage
- Ajouter des tests pour les nouvelles fonctionnalités
- Maintenir la couverture de code à 80%+
- Documenter les APIs publiques
- Suivre le format de commit conventionnel
MIT License - Voir le fichier LICENSE pour plus de détails.