Un système de gestion de bibliothèque full-stack construit avec la stack MERN (MongoDB, Express.js, React, Node.js). Ce projet permet aux utilisateurs de gérer les livres, les clients, les emprunts et les catégories dans une bibliothèque. Il inclut des fonctionnalités d'authentification, de contrôle d'accès basé sur les rôles, et une interface front-end réactive.
- Fonctionnalités
- Technologies Utilisées
- Utilisation
- Structure du Projet
- Documentation de l'API
- Captures d'Écran
- Authentification : Inscription, connexion et déconnexion.
- Gestion du Profil : Mettre à jour les détails du client (nom, email, adresse).
- Gestion des Livres :
- Parcourir les livres disponibles.
- Vérifier la disponibilité des livres.
- Gestion des Emprunts :
- Emprunter des livres (créer des emprunts).
- Retourner des livres.
- Voir l'historique des emprunts.
- Gestion des Livres :
- Ajouter, mettre à jour et supprimer des livres.
- Gérer les quantités de livres.
- Gestion des Catégories :
- Ajouter, mettre à jour et supprimer des catégories.
- Gestion des Clients :
- Voir et gérer les comptes clients.
- Gestion des Emprunts :
- Voir tous les emprunts.
- Mettre à jour le statut des emprunts.
- Node.js - Environnement d'exécution JavaScript pour le serveur.
- Express.js - Framework web pour construire des API RESTful.
- MongoDB - Base de données NoSQL pour stocker les données.
- Mongoose - ODM (Object Data Modeling) pour MongoDB.
- JWT (JSON Web Tokens) - Authentification et autorisation.
- Postman - Test des API.
- Git - Contrôle de version.
- Node.js (v16 ou supérieur)
- MongoDB (instance locale ou cloud)
- Git (optionnel)
-
Cloner le Dépôt
git clone https://github.com/abderrahimelouali/library-management.git cd library-management -
Installer les Dépendances
cd server npm install -
Configurer les Variables d'Environnement
-
Créez un fichier
.envdans le dossierserver:PORT=5000 # MONGO_URI=your_mongodb_connection_uri MONGO_URI=mongodb://localhost:27017/bibliotheque JWT_SECRET=your_jwt_secret_key
-
-
Créez un fichier
netlify.tomldans le dossierserver:[build] functions = "functions" publish = "public" [[redirects]] from = "/\*" to = "/.netlify/functions/app" status = 200
-
Démarrer le Serveur Back-End
# init netlify in the project directory npm install -g netlify-cli@11.4.0 netlify init # "scripts" : { "dev": "netlify dev" } npm run dev
-
Accéder à l'Application
- Back-End : L'API est accessible sur
http://localhost:8888/.
- Back-End : L'API est accessible sur
server/
├── config/ # Configuration de la base de données et autres
├── controllers/ # Logique pour gérer les routes
├── functions/app.js # Configuration de l'application Express
├── middlewares/ # Middlewares d'authentification et autres
├── models/ # Modèles MongoDB (Client, Livre, Emprunt, Categorie)
├── routes/ # Routes API
├── .env # Variables d'environnement
├── .gitignore # Fichiers et dossiers à ignorer dans Git
├── netlify.toml # Configuration Netlify pour le déploiement
├── package-lock.json # Dépendances exactes pour le projet Node.js
└── package.json # Dépendances et scripts npm
Visitez la documentation de l'API ici, pour plus de détails sur les endpoints et les requêtes.
-
Client Authentification Documentation ici
-
Inscription :
POST /api/clients/registerAccès : Public Description : Permet à un nouveau client de s'inscrire. -
Connexion :
POST /api/clients/loginAccès : Public Description : Permet à un client de se connecter. -
Déconnexion :
POST /api/clients/logoutAccès : Client Description : Permet à un client de se déconnecter.
-
Client Profile Documentation ici
-
Mettre à Jour le Profil :
PUT /api/clients/profileAccès : Client Description : Permet à un client de mettre à jour ses informations de profil. -
Changer le Mot de Passe :
PUT /api/clients/passwordAccès : Client Description : Permet à un client de changer son mot de passe. -
Obtenir les Détails du Client :
GET /api/clients/meAccès : Client Description : Récupère les détails du client connecté. -
Obtenir les Emprunts du Client :
GET /api/clients/empruntsAccès : Client Description : Récupère tous les emprunts du client connecté.
-
Clients CRUD Documentation ici
-
Obtenir Tous les Clients :
GET /api/clients/Accès : Admin Description : Récupère la liste de tous les clients (pour les administrateurs). -
Obtenir un Client par ID :
GET /api/clients/:idAccès : Admin Description : Récupère les détails d'un client spécifique par son ID. -
Mettre à Jour un Client :
PUT /api/clients/:idAccès : Admin Description : Permet à un administrateur de mettre à jour les informations d'un client. -
Supprimer un Client :
DELETE /api/clients/:idAccès : Admin Description : Permet à un administrateur de supprimer un client.
-
Livres Documentation ici
-
Obtenir Tous les Livres :
GET /api/livresAccès : Public Description : Récupère la liste de tous les livres disponibles. -
Obtenir un Livre par ID :
GET /api/livres/:idAccès : Public Description : Récupère les détails d'un livre spécifique par son ID. -
Ajouter un Livre :
POST /api/livresAccès : Admin uniquement Description : Permet à un administrateur d'ajouter un nouveau livre. -
Mettre à Jour un Livre :
PUT /api/livres/:idAccès : Admin uniquement Description : Permet à un administrateur de mettre à jour les informations d'un livre existant. -
Supprimer un Livre :
DELETE /api/livres/:idAccès : Admin uniquement Description : Permet à un administrateur de supprimer un livre.
-
Emprunts Documentation ici
-
Créer un Emprunt :
POST /api/empruntsAccès : Client uniquement Description : Permet à un client de créer un nouvel emprunt (emprunter un livre). -
Obtenir un Emprunt par ID :
GET /api/emprunts/:idAccès : Client ou Admin Description : Récupère les détails d'un emprunt spécifique par son ID. -
Mettre à Jour un Emprunt :
PUT /api/emprunts/:idAccès : Admin uniquement Description : Permet à un administrateur de mettre à jour les informations d'un emprunt (par exemple, prolonger la date de retour). -
Supprimer un Emprunt :
DELETE /api/emprunts/:idAccès : Admin uniquement Description : Permet à un administrateur de supprimer un emprunt. -
Obtenir Tous les Emprunts :
GET /api/empruntsAccès : Admin uniquement Description : Récupère la liste de tous les emprunts (pour les administrateurs). -
Obtenir les Emprunts d'un Client :
GET /api/emprunts/client/:clientIdAccès : Client ou Admin Description : Récupère tous les emprunts d'un client spécifique. Un client ne peut accéder qu'à ses propres emprunts, tandis qu'un administrateur peut accéder à tous les emprunts. -
Retourner un Livre :
POST /api/emprunts/:id/returnAccès : Client ou Admin Description : Permet de marquer un emprunt comme retourné (rendre un livre).
-
Catégories Documentation ici
-
Obtenir Toutes les Catégories :
GET /api/categoriesAccès : Public Description : Récupère la liste de toutes les catégories disponibles. -
Obtenir une Catégorie par ID :
GET /api/categories/:idAccès : Public Description : Récupère les détails d'une catégorie spécifique par son ID. -
Ajouter une Catégorie :
POST /api/categoriesAccès : Admin uniquement Description : Permet à un administrateur d'ajouter une nouvelle catégorie. -
Mettre à Jour une Catégorie :
PUT /api/categories/:idAccès : Admin uniquement Description : Permet à un administrateur de mettre à jour les informations d'une catégorie existante. -
Supprimer une Catégorie :
DELETE /api/categories/:idAccès : Admin uniquement Description : Permet à un administrateur de supprimer une catégorie.

