# đŸ…żïž Smart Parking > SystĂšme complet de gestion de parking intelligent avec authentification, rĂ©servation et paiement QR code ## 📋 FonctionnalitĂ©s ### 🔐 Authentification - Inscription avec nom, email, tĂ©lĂ©phone et mot de passe - Connexion sĂ©curisĂ©e - Gestion de profil - Deux rĂŽles : Client et Administrateur ### đŸ—ș Carte du Parking - **10 places** visuelles (modifiable par l'admin) - 3 Ă©tats : Libre ✅, OccupĂ©e 🚗, RĂ©servĂ©e 📅 - Mise Ă  jour en temps rĂ©el - DĂ©tails de chaque place au clic ### 📅 SystĂšme de RĂ©servation - SĂ©lection de la place - Choix de la date et heure - DurĂ©e : 30min, 1h, 2h, 4h, JournĂ©e - Saisie de la plaque d'immatriculation ### 💳 Paiement QR Code - GĂ©nĂ©ration de QR code unique - Code de paiement affichĂ© - Confirmation du paiement ### đŸ‘€ Espace Client - Consulter la carte des places - Voir les tarifs - Faire une rĂ©servation - Voir l'historique des rĂ©servations - GĂ©rer son profil ### ⚙ Panel Admin - Voir toutes les statistiques - Modifier le nombre de places - GĂ©rer l'Ă©tat de chaque place - Voir tous les utilisateurs - Voir toutes les rĂ©servations - Annuler/terminer des rĂ©servations - Voir l'historique complet ## 💰 Tarifs | DurĂ©e | Prix | |-------|------| | 30 minutes | 2€ | | 1 heure | 3€ | | 2 heures | 5€ | | 4 heures | 8€ | | JournĂ©e (8h) | 15€ | ## 🚀 Installation ### PrĂ©requis - Node.js 18+ - npm ### Étape 1 : Installer les dĂ©pendances ```bash cd server npm install ``` ### Étape 2 : DĂ©marrer le serveur ```bash npm start ``` Pour le dĂ©veloppement (avec redĂ©marrage automatique) : ```bash npm run dev ``` ### Étape 3 : AccĂ©der au site Ouvrir un navigateur et aller sur : ``` http://localhost:3000 ``` ## 🔑 Compte par dĂ©faut **Administrateur :** - Email : `admin@smartparking.fr` - Mot de passe : `admin123` ## 📁 Structure du projet ``` smart-parking/ ├── index.html # Page de connexion/inscription ├── css/ │ ├── style.css # Styles globaux │ ├── auth.css # Styles authentification │ └── dashboard.css # Styles dashboard ├── js/ │ ├── auth.js # Gestion authentification │ ├── dashboard.js # Gestion dashboard │ ├── map.js # Carte des places │ ├── reservation.js # SystĂšme de rĂ©servation │ └── admin.js # Panel admin ├── pages/ │ └── dashboard.html # Dashboard principal ├── server/ │ ├── package.json # DĂ©pendances Node.js │ ├── server.js # Serveur principal │ ├── db/ │ │ └── database.js # Gestion SQLite │ ├── middleware/ │ │ └── auth.js # Middleware JWT │ └── routes/ │ └── api.js # Routes API └── README.md # Ce fichier ``` ## 🔌 API REST ### Authentification | MĂ©thode | Endpoint | Description | |---------|----------|-------------| | POST | `/api/register` | Inscription | | POST | `/api/login` | Connexion | ### Utilisateurs | MĂ©thode | Endpoint | Description | |---------|----------|-------------| | GET | `/api/users` | Liste des utilisateurs (admin) | | DELETE | `/api/users/:id` | Supprimer un utilisateur (admin) | ### Places | MĂ©thode | Endpoint | Description | |---------|----------|-------------| | GET | `/api/spots` | Liste des places | | PUT | `/api/spots/:id/status` | Modifier le statut | | POST | `/api/spots/init` | RĂ©initialiser les places (admin) | ### RĂ©servations | MĂ©thode | Endpoint | Description | |---------|----------|-------------| | GET | `/api/reservations` | Mes rĂ©servations | | GET | `/api/reservations/all` | Toutes les rĂ©servations (admin) | | POST | `/api/reservations` | CrĂ©er une rĂ©servation | | PUT | `/api/reservations/:id/cancel` | Annuler une rĂ©servation | ### Statistiques | MĂ©thode | Endpoint | Description | |---------|----------|-------------| | GET | `/api/stats` | Statistiques du parking | | GET | `/api/history` | Historique (admin) | ## đŸ› ïž Technologies utilisĂ©es ### Frontend - HTML5 - CSS3 (responsive) - JavaScript vanilla - Chart.js (graphiques) - QRCode.js (gĂ©nĂ©ration QR) ### Backend - Node.js - Express.js - SQLite3 - JWT (authentification) - bcryptjs (hashage mots de passe) ## đŸ“± Fonctionnement ### Pour les clients : 1. CrĂ©er un compte ou se connecter 2. Consulter la carte des places disponibles 3. Choisir une place libre 4. SĂ©lectionner date, heure et durĂ©e 5. Scanner le QR code pour payer 6. La place est rĂ©servĂ©e ! ### Pour l'administrateur : 1. Se connecter avec le compte admin 2. AccĂ©der au panel Admin 3. Voir toutes les statistiques 4. GĂ©rer les places (cliquer pour changer l'Ă©tat) 5. Modifier le nombre total de places 6. GĂ©rer les utilisateurs et rĂ©servations ## 🔒 SĂ©curitĂ© - Mots de passe hashĂ©s avec bcrypt - Authentification JWT - Protection des routes sensibles - Validation des donnĂ©es ## 📝 Notes - Les donnĂ©es sont stockĂ©es dans SQLite (`server/db/smart-parking.db`) - Le systĂšme fonctionne aussi en mode offline (stockage local) - La simulation automatique change l'Ă©tat des places toutes les 5 secondes ---

đŸ…żïž Smart Parking - BTS CIEL IR 2025 đŸ…żïž