Shop E-commerce API - Backend REST complet
API REST professionnelle pour plateforme e-commerce avec Django, PostgreSQL, JWT et analytics pour dashboards Streamlit
Contexte et Objectifs
Beaucoup d'amis autour de moi ont des idées de projets e-commerce mais manquent d'outils pour piloter leur activité. Je me suis donc demandé : est-ce que je pouvais créer un backend complet qui les aiderait dans la prise de décisions business grâce aux données ? J'ai développé cette API REST professionnelle avec une architecture modulaire en 4 apps Django (accounts, products, orders, analytics). L'objectif principal était de construire une plateforme robuste capable de gérer un catalogue produits, des commandes clients, et surtout de fournir des analytics business en temps réel. Un accent particulier a été mis sur le module Analytics : l'objectif est de construire des dashboards Streamlit alimentés par les APIs pour donner une vision claire des performances (quels produits marchent, quels clients sont engagés, quelle est la croissance). C'est grâce à toute cette architecture backend que ces KPIs sont calculés en temps réel.
Détails Techniques
👤 Accounts - Authentification & Utilisateurs
Système d'authentification JWT sécurisé avec email comme identifiant, tokens access/refresh, et gestion des profils utilisateurs. Approche stateless permettant scaling horizontal. Modèle User personnalisé avec UUID pour sécurité (empêche énumération des comptes) et conformité RGPD avec champs de consentement traçables.
Points clés :
- JWT Tokens : Access (1h) + Refresh (7j) pour sécurité et UX
- Email comme identifiant principal (standard e-commerce)
- UUID comme clé primaire (sécurité anti-énumération)
- Permissions role-based : is_admin et is_staff
- Conformité RGPD : newsletter_consent et marketing_consent
- Validation forte des mots de passe (longueur, complexité)
- Endpoints : register, login, token/refresh, profile GET/PATCH
📦 Products - Catalogue & Images
Gestion complète du catalogue avec catégories hiérarchiques (relation parent/enfant), gestion intelligente du stock (reduce_stock/increase_stock avec validation), slugs automatiques URL-friendly pour SEO, et images multiples par produit avec ordre d'affichage personnalisable.
Points clés :
- Catégories hiérarchiques : relation parent/enfant à N niveaux
- Gestion intelligente du stock : méthodes reduce/increase avec validation
- Slugs automatiques : macbook-pro-14-m3 (SEO-friendly)
- ProductImage : One-to-Many avec order et alt_text (accessibilité)
- Recherche full-text : nom, description, SKU
- Filtrage avancé : par catégorie, prix, stock
- Tri dynamique : price, -price, created_at
- Pagination 20 items/page pour performances
- Soft delete : is_active=False (conserve historique)
🛍️ Orders - Gestion des Commandes
Système complet de traitement des commandes avec machine à états (PENDING → CONFIRMED → SHIPPED → DELIVERED ou CANCELLED). Gestion automatique du stock à la création et restauration à l'annulation. Système de snapshots : prix et nom produit sauvegardés pour historique immuable et audit trail financier.
Points clés :
- Machine à états : workflow strict PENDING→CONFIRMED→SHIPPED→DELIVERED
- Gestion stock automatique : réduction à la création, restauration à l'annulation
- Snapshots immutables : prix et nom produit figés au moment de l'achat
- UUID comme clé primaire pour sécurité
- OrderItem : relation Many-to-Many avec quantity et subtotal
- Permissions granulaires : IsOwnerOrAdmin
- Actions admin : confirm, ship, deliver
- Annulation : client si PENDING, admin si PENDING/CONFIRMED
- Filtrage par statut et tri par date/montant
- Timestamps pour chaque transition (confirmed_at, shipped_at, delivered_at)
📊 Analytics - Business Intelligence & KPIs
Module d'analytics fournissant 20+ KPIs en temps réel pour piloter le business. Architecture en 3 couches : Services (business/product/user KPIs), Views avec cache Redis (15min), et Dashboard Streamlit. Cache Redis réduit la charge DB de 98% (1.8s → 1ms). KPIs calculés : revenue, AOV, MoM growth, CLV, repeat purchase rate, top products, low stock alerts, user segmentation (New/One-time/Repeat/Loyal).
Points clés :
- Cache Redis : 98% réduction charge DB (1.8s → 1ms)
- KPIs Business : Revenue, AOV, MoM Growth, CLV, Repeat Purchase Rate
- KPIs Products : Top 10 by revenue/quantity, low stock alerts, inventory value
- KPIs Users : Active users, new users, segmentation (New/One-time/Repeat/Loyal), top customers
- Architecture Service Layer : logique métier isolée (testabilité)
- Dashboard Streamlit : 4 pages (Overview, Business, Products, Users)
- Agrégations PostgreSQL optimisées (SUM, AVG, COUNT, GROUP BY)
- Permissions : IsAdminUser (KPIs sensibles)
- Endpoints : /dashboard/, /business/, /products/, /users/ avec filtres par période
Fonctionnalités Principales
Architecture modulaire - 4 apps Django
Structuration en apps découplées (accounts, products, orders, analytics) selon Separation of Concerns. Facilite maintenabilité, testabilité et scalabilité.
Performance & Cache Redis
Cache stratégique sur endpoints analytics (15min). Réduction 98% charge DB. Query optimization avec select_related/prefetch_related.
Dashboard Streamlit & Data-Driven
Vision temps réel pour piloter le business : revenue, top products, segmentation clients. Graphiques Plotly interactifs. Authentification via API Django.
DevOps & Docker
Orchestration 3 services (web, db, redis) avec Docker Compose. Health checks, volume persistence. Management command pour générer données test (300 users, 200 products, 1000 orders).
Défis Techniques
- Architecture modulaire : Séparation claire des responsabilités entre 4 apps avec relations complexes
- Performance analytics : Optimisation agrégations PostgreSQL + cache Redis (1.8s → 1ms)
- Data modeling : Relations Order/OrderItem/Product avec snapshots pour historique immuable
- Scalabilité : JWT stateless, query optimization (N+1), indexation stratégique
- Business Intelligence : Calcul de 20+ KPIs en temps réel avec précision financière
Résultats et Accomplissements
- 4 apps modulaires complètement fonctionnelles avec 20+ endpoints REST
- Système d'analytics avec 20+ KPIs calculés en temps réel
- Cache Redis : réduction 98% charge DB sur endpoints lourds
- Dashboard Streamlit avec 4 pages d'analyse et graphiques interactifs
- Infrastructure Docker prête pour production (healthchecks, volumes)
- Management command : génération 300 users, 200 products, 1000 orders
- Documentation Swagger/OpenAPI automatique
- Base solide pour évolutions : Stripe, AWS S3, webhooks