Skip to content

nemesis228ux/inventory-management-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Documentation API version='1.0.0'


📦 Inventory Management API

Une API RESTful construite avec Flask, Flask-RESTful, SQLAlchemy, Marshmallow et JWT pour gérer un inventaire (produits, catégories, stocks, entrepôts, mouvements).


🚀 Fonctionnalités

  • 🔐 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

⚙️ Installation

  1. 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

🔑 Authentification

Certaines routes nécessitent un JWT Token.

  1. Crée un utilisateur via POST /register.
  2. Connecte-toi via POST /login pour obtenir un token.
  3. 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>:

POST /register

  • 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

About

API Flask de gestion d'inventaire d'entrepots

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages