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
.env
dans 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.toml
dans 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/register
Accès : Public Description : Permet à un nouveau client de s'inscrire. -
Connexion :
POST /api/clients/login
Accès : Public Description : Permet à un client de se connecter. -
Déconnexion :
POST /api/clients/logout
Accès : Client Description : Permet à un client de se déconnecter.
-
Client Profile Documentation ici
-
Mettre à Jour le Profil :
PUT /api/clients/profile
Accès : Client Description : Permet à un client de mettre à jour ses informations de profil. -
Changer le Mot de Passe :
PUT /api/clients/password
Accès : Client Description : Permet à un client de changer son mot de passe. -
Obtenir les Détails du Client :
GET /api/clients/me
Accès : Client Description : Récupère les détails du client connecté. -
Obtenir les Emprunts du Client :
GET /api/clients/emprunts
Accè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/:id
Accès : Admin Description : Récupère les détails d'un client spécifique par son ID. -
Mettre à Jour un Client :
PUT /api/clients/:id
Accès : Admin Description : Permet à un administrateur de mettre à jour les informations d'un client. -
Supprimer un Client :
DELETE /api/clients/:id
Accès : Admin Description : Permet à un administrateur de supprimer un client.
-
Livres Documentation ici
-
Obtenir Tous les Livres :
GET /api/livres
Accès : Public Description : Récupère la liste de tous les livres disponibles. -
Obtenir un Livre par ID :
GET /api/livres/:id
Accès : Public Description : Récupère les détails d'un livre spécifique par son ID. -
Ajouter un Livre :
POST /api/livres
Accès : Admin uniquement Description : Permet à un administrateur d'ajouter un nouveau livre. -
Mettre à Jour un Livre :
PUT /api/livres/:id
Accès : Admin uniquement Description : Permet à un administrateur de mettre à jour les informations d'un livre existant. -
Supprimer un Livre :
DELETE /api/livres/:id
Accès : Admin uniquement Description : Permet à un administrateur de supprimer un livre.
-
Emprunts Documentation ici
-
Créer un Emprunt :
POST /api/emprunts
Accès : Client uniquement Description : Permet à un client de créer un nouvel emprunt (emprunter un livre). -
Obtenir un Emprunt par ID :
GET /api/emprunts/:id
Accè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/:id
Accè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/:id
Accès : Admin uniquement Description : Permet à un administrateur de supprimer un emprunt. -
Obtenir Tous les Emprunts :
GET /api/emprunts
Accè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/:clientId
Accè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/return
Accè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/categories
Accès : Public Description : Récupère la liste de toutes les catégories disponibles. -
Obtenir une Catégorie par ID :
GET /api/categories/:id
Accès : Public Description : Récupère les détails d'une catégorie spécifique par son ID. -
Ajouter une Catégorie :
POST /api/categories
Accès : Admin uniquement Description : Permet à un administrateur d'ajouter une nouvelle catégorie. -
Mettre à Jour une Catégorie :
PUT /api/categories/:id
Accès : Admin uniquement Description : Permet à un administrateur de mettre à jour les informations d'une catégorie existante. -
Supprimer une Catégorie :
DELETE /api/categories/:id
Accès : Admin uniquement Description : Permet à un administrateur de supprimer une catégorie.