Une API RESTful construite avec Flask, Flask-RESTful, SQLAlchemy, Marshmallow et JWT pour gérer un inventaire (produits, catégories, stocks, entrepôts, mouvements).
- 🔐 Authentification avec JWT
- 📂 Gestion des catégories
- 🏢 Gestion des entrepôts
- 🛒 Gestion des produits
- 📦 Gestion des stocks
- 🔄 Suivi des mouvements (entrée/sortie)
- 📚 Documentation simple et claire
- Clone le repo :
•git clone <url-du-depot> •cd inventory-management-api
2.Crée un environnement virtuel et installe les dépendances :
♦ Créer l’environnement virtuel python -m venv .venv
♦ Activer l’environnement source .venv/bin/activate # Linux/Mac .venv\Scripts\activate # Windows
♦ Installer les dépendances pip install -r requirements.txt
♦ Lancer l’API python app.py
♦ Avoir une base de donnée mysql nommée "inventory_management" avec user=root, password=''
API sera disponible sur : 👉 http://127.0.0.1:5000
Certaines routes nécessitent un JWT Token.
- Crée un utilisateur via
POST /register. - Connecte-toi via
POST /loginpour obtenir un token. - Ajoute le token dans l’onglet Headers de Postman. Pour accéder aux routes sécurisées, ajoute le token dans le header : Authorization: Bearer <votre_token>:
- Description: Crée un nouvel utilisateur.
- Body JSON:
{
"username": "john",
"password": "secret"
}
``Réponse
{
"id": 1,
"username": "john",
}
``` Status: 201
### POST /login
- **Description: Connecte un utilisateur et retourne un JWT.
- **Body JSON**:
```json
{
"username": "john",
"password": "secret"
}
``Réponse
{
"access_token": "<votre_token>"
}
``` Status: 200
🗂️ Catégories
GET /categories → Liste toutes les catégories
GET /categories/<id> → Détails d’une catégorie
POST /categories → Ajouter une catégorie
PUT /categories/<id> → Modifier complètement une catégorie
PATCH /categories/<id> → Modifier partiellement une catégorie
DELETE /categories/<id> → Supprimer une catégorie
📌 Exemple JSON (POST /categories) :
{
"name": "Électronique"
}
🛒 Produits /products
GET /products → Liste tous les produits
POST /products → Crée un produit
GET /products/<id> → Récupère un produit
PUT /products/<id> → Met à jour un produit
PATCH /products/<id> → Met à jour un produit partiellement
DELETE /products/<id> → Supprime un produit
📌 Exemple JSON (POST /products) :
{
"name": "Smartphone",
"description": "iPhone 15 Pro",
"price": 1500,
"category_id": 1
}
📦 Stocks /stocks
GET /stocks → Liste tous les stocks
POST /stocks → Crée un stock
GET /stocks/<id> → Récupère un stock
PUT /stocks/<id> → Met à jour un stock
PATCH /stocks/<id> → Met à jour partiellement
DELETE /stocks/<id> → Supprime un stock
📌 Exemple JSON (POST /stocks) :
{
"quantity": 50,
"warehouse_id": 1,
"product_id": 1
}
🏢 Entrepôts /warehouses
GET /warehouses → Liste tous les entrepôts
POST /warehouses → Crée un entrepôt
GET /warehouses/<id> → Récupère un entrepôt
PUT /warehouses/<id> → Met à jour un entrepôt
PATCH /warehouses/<id> → Met à jour partiellement
DELETE /warehouses/<id> → Supprime un entrepôt
📌 Exemple JSON (POST /warehouses) :
{
"name": "Entrepôt Central",
"location": "Abidjan"
}
🔄 Mouvements
🔄 Mouvements /movements
GET /movements → Liste tous les mouvements
POST /movements → Crée un mouvement
GET /movements/<id> → Récupère un mouvement
PUT /movements/<id> → Met à jour
PATCH /movements/<id> → Met à jour partiellement
DELETE /movements/<id> → Supprime un mouvement
📌 Exemple JSON (POST /movements) :
{
"type": "in",
"quantity": 20,
"date": "2025-08-21",
"warehouse_id": 1,
"product_id": 1
}
⚠️ Erreurs fréquentes
•400 Bad Request → Erreur de validation (mauvais JSON ou champs manquants)
•401 Unauthorized → Token JWT manquant ou invalide
•404 Not Found → Ressource inexistante
•422 Validation Error → Problème lors du décodage du token ou champs invalides
•500 Internal Server Error → Erreur serveur
🚀 Installation & Lancement
✨ Remarques
•⚠️ Pense à toujours envoyer le token JWT dans les requêtes protégées.
•📖 Documentation simple volontairement, pour plus de détails → voir le code.
🛠️ Améliorations futures
📊 Dashboard Front-end avec React ou Vue.js
🌍 Déploiement sur Render, Railway ou Heroku
📑 Ajout de Swagger UI / Postman Collection
📧 Vérification par email lors de l’inscription
👨💻 Auteur
✨ Réalisé par BARRY Boukari Ali