Si le lien ne marche pas, considérez de copier lien et de le coller dans la barre de recherche.
- Introduction
- Technologies et Outils Utilisés
- Architecture et Design
- Description Fonctionnelle
- Description Non-Fonctionnelle
- Bonnes Pratiques de Développement
- Multilingue
- Structure du Backend
- Prise en Main
- Aperçu de l’Application
- Base de Données
- Les Contibuteurs
Le projet vise à développer une plateforme e-commerce performante et sécurisée, capable de répondre aux besoins de trois types d’utilisateurs principaux : les Clients, les Administrateurs, et les Fournisseurs. Les principaux objectifs sont :
- Fournir une expérience utilisateur intuitive grâce à une interface simple et fluide.
- Automatiser les processus métiers comme la gestion des produits, commandes et rapports.
- Assurer la sécurité des données en utilisant des techniques modernes de chiffrement et de gestion des utilisateurs.
- Permettre une évolutivité facile en adoptant une architecture modulaire et conforme aux bonnes pratiques.
- Faciliter l’intégration multilingue pour rendre la plateforme accessible à un large public.
La plateforme e-commerce est une application web complète et modulable conçue pour répondre aux besoins variés des utilisateurs. Elle repose sur :
- Un backend robuste développé avec Django, couplé à une base de données relationnelle MySQL, garantissant la fiabilité des opérations et la gestion des données.
- Une architecture modulaire conforme aux principes SOLID et CLEAN CODE, facilitant la maintenabilité et l’extensibilité du projet.
- Un système multilingue générique, permettant d’ajouter facilement de nouvelles langues pour une meilleure accessibilité.
- Un mécanisme de sécurité avancé, intégrant le hachage des mots de passe et la gestion des rôles utilisateurs (Clients, Administrateurs, Fournisseurs).
- Des fonctionnalités sur mesure :
- Pour les Clients : Recherche de produits, gestion des commandes, et suivi des achats.
- Pour les Administrateurs : Gestion des produits et catégories, tableau de bord statistique, et interaction via le chat.
- Pour les Fournisseurs : Ajout de produits, suivi des commandes, et consultation des rapports de vente.
Ce projet est conçu pour être à la fois performant, maintenable et facilement déployable dans un environnement de production.
Le projet repose sur une stack technologique moderne et des outils robustes pour assurer sa performance, sa maintenabilité, et sa sécurité. Voici les principaux éléments utilisés :
Cette combinaison de technologies garantit une application robuste, maintenable et facile à étendre.
Description
Le diagramme de classes ci-dessous représente la structure conceptuelle du projet e-commerce, en montrant les principales entités (Client, Admin, Supplier, Product, Order, Review, et Chat) ainsi que leurs relations. Il est essentiel pour comprendre l'organisation des données et des interactions dans le système.
Diagramme
Description
Le diagramme de cas d'utilisation ci-dessous représente les principales interactions entre les acteurs du système (Client, Admin, Supplier) et les fonctionnalités qu'ils peuvent effectuer. Les cas d'utilisation communs à plusieurs acteurs (comme "S'inscrire et se connecter" et "Contacter via le chat") sont également mis en évidence.
Diagramme
Le client peut :
- S'inscrire et se connecter.
- Modifier ses informations de profil.
- Ajouter un avis sur le service Gestepice.
- Ajouter un avis et recommander des produits.
- Rechercher des produits par catégorie et/ou mot-clé.
- Consulter la liste de ses commandes et imprimer les factures.
- Ajouter des produits au panier et passer une commande.
- Contacter l'administrateur via un chat en temps réel.
L'administrateur peut :
- Consulter les différentes statistiques de l’épicerie via un dashboard interactif.
- Ajouter, modifier et supprimer des produits et catégories.
- Consulter la liste des commandes passées.
- Consulter la liste des produits fabriqués par les étudiants de l'INPT et gérer les paiements pour ces derniers.
- Recharger le solde des utilisateurs.
- Répondre aux préoccupations des clients via un chat.
Le fournisseur peut :
- S'inscrire et se connecter pour accéder à son espace dédié.
- Ajouter, modifier et supprimer ses produits disponibles sur la plateforme.
- Consulter les commandes des clients pour ses produits spécifiques.
- Suivre l’état de paiement pour les commandes de ses produits.
- Recevoir des notifications pour les commandes des clients.
- Gérer les stocks et voir les alertes en cas de rupture de stock.
- Télécharger un rapport des ventes mensuelles pour ses produits.
-
Architecture :
- Basée sur le framework Django MVC.
- Structure modulaire et réutilisable avec des apps Django.
-
Performance :
- Temps de réponse inférieur à 2 secondes pour toutes les requêtes utilisateur.
-
Sécurité :
- Hachage sécurisé des mots de passe avec la fonction de hachage Python (
hashlib). - Validation des entrées utilisateur pour prévenir les failles courantes telles que les injections SQL et XSS.
- Utilisation de Django pour la gestion des sessions et de l’authentification.
- Prévention des attaques CSRF et XSS via les middlewares Django.
- Hachage sécurisé des mots de passe avec la fonction de hachage Python (
-
Portabilité :
- Compatible avec les principaux navigateurs (Chrome, Firefox, Edge).
-
Base de Données :
- MySQL pour la base relationnelle.
Django prend en charge l’internationalisation (i18n) pour développer des applications multilingues. Voici les étapes clés mises en œuvre pour intégrer le multilingue dans ce projet :
-
Marquage des chaînes de caractères :
- Dans les templates : Les chaînes traduisibles sont entourées par
{% trans %}. - Dans le code Python : Les chaînes sont marquées avec
_().
- Dans les templates : Les chaînes traduisibles sont entourées par
-
Extraction des chaînes traduisibles :
- La commande suivante a été utilisée pour générer les fichiers
.pocontenant les chaînes traduisibles :django-admin makemessages -l <code_langue>
Exemple :
django-admin makemessages -l frpour le français.
- La commande suivante a été utilisée pour générer les fichiers
-
Ajout des traductions :
- Les fichiers
.pogénérés ont été remplis avec les traductions nécessaires.
- Les fichiers
-
Compilation des fichiers de traduction :
- Les fichiers
.poont été compilés en fichiers.moà l’aide de la commande suivante :django-admin compilemessages
- Les fichiers
-
Sélection automatique de la langue :
- Le LocaleMiddleware a été activé pour que Django sélectionne automatiquement la langue en fonction :
- Des préférences de l’utilisateur.
- De l’URL (si configuré).
- Le LocaleMiddleware a été activé pour que Django sélectionne automatiquement la langue en fonction :
-
Ajout d’un sélecteur de langue :
- Une interface a été implémentée pour permettre aux utilisateurs de changer de langue facilement.
L’application adapte son contenu à la langue préférée de l’utilisateur, offrant une expérience fluide et personnalisée.
Les patrons de conception tels que Singleton, DAO, et MVC ont été utilisés pour structurer le code de manière modulaire, facilitant la réutilisation et la maintenabilité.
Le code respecte les principes SOLID pour assurer une architecture robuste et scalable, tout en suivant les pratiques Clean Code pour améliorer la lisibilité et réduire les erreurs.
Tout le code Python suit les normes PEP8 REFERENCE pour garantir un style cohérent, ce qui facilite la collaboration en équipe et réduit les problèmes liés au formatage.
Des linters, comme Flake8, ont été intégrés dans le processus de développement pour :
- Vérifier la conformité au style de code (PEP8).
- Identifier les erreurs potentielles avant l'exécution.
- Maintenir un code de haute qualité.
Un workflow Git rigoureux a été mis en place :
- main : Code stable.
- dev : Développement actif.
- Branches dédiées pour chaque fonctionnalité, avec des pull requests pour validation.
- Intégration des commits avec les résultats des linters pour garantir une qualité constante.
Des tests unitaires, développés avec pytest, ont été mis en place pour vérifier les fonctionnalités clés. Ces tests garantissent la fiabilité du code et détectent les éventuelles régressions avant le déploiement.
Les issues GitHub ont été utilisées pour organiser et structurer les tâches du projet. Chaque issue a été :
- Taguée selon son type (bug, feature, enhancement).
- Testée et documentée avant d’être fermée.
- Liée à la branche associée pour assurer une traçabilité et une intégration propre dans le code.
Cette approche garantit un suivi rigoureux du développement et facilite la collaboration en équipe.
projet/
├── admins_epicerie/
│ ├── ...
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── gesteprice/
│ ├── ...
│ ├── asgi.py
│ ├── manage.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── gestion_epicerie/
│ ├── views.py
│ └── ...
├── locale/
│ ├── en/
│ │ └── LC_MESSAGES/
│ │ ├── django.mo
│ │ └── django.po
│ ├── fr/
│ └── ...
├── users_epicerie/
│ ├── __pycache__/
│ ├── image/
│ ├── migrations/
│ ├── static/
│ │ └── css/
│ ├── templates/
│ ├── templatetags/
│ ├── __init__.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── gesteprice.sql
└── manage.py
---
Avant de commencer, assurez-vous d'avoir installé les éléments suivants :
- Python 3.9 ou supérieur : Nécessaire pour exécuter le backend.
- Pip : Gestionnaire de packages Python.
- MySQL : Base de données utilisée pour stocker les informations du projet.
- Un éditeur de texte/IDE : Recommandé, comme Visual Studio Code.
Suivez ces étapes pour configurer et exécuter le projet localement.
- Décompressez le projet
Téléchargez et décompressez l'archive contenant les fichiers du projet. Ensuite, ouvrez le terminal dans le répertoire principal à l'aide de Visual Studio Code ou d'un autre éditeur.
- Importez la base de données
Exécutez la commande suivante pour importer la base de données à partir du fichier gestepice.sql :
mysql -u root -p gestepice < gestepice.sql- Installez les dépendances
pip install -r requirements.txt- Effectuez les migrations de la base de données
python manage.py makemigrations- Lancez le serveur
python manage.py runserverMaintenant, vous pouvez accéder à l'application en visitant http://localhost:8000 dans votre navigateur web.
Cette section présente un aperçu visuel de l’application e-commerce, illustrant ses principales fonctionnalités et interfaces utilisateur. Les captures d’écran suivantes mettent en évidence l'expérience utilisateur pour les différents rôles : Client, Administrateur, et Fournisseur.
Le modèle conceptuel se compose des entités principales suivantes :
- Users : Gestion des utilisateurs (nom, email, rôle, etc.).
- Admin : Informations des administrateurs (pseudo, photo, etc.).
- Produit : Détails des produits (nom, prix, description, etc.).
- Catégorie : Classification des produits.
- Commande : Historique des commandes.
- Messages : Échange de messages entre utilisateurs.
- Facture : Suivi des paiements.
- Recommandations : Suggestions basées sur les interactions utilisateur.
Le diagramme ci-dessus représente les relations principales :
- Catégorie ⇾ Produit : Une catégorie contient plusieurs produits.
- Users ⇾ Commande ⇾ Facture : Un utilisateur peut effectuer plusieurs commandes, chacune liée à une facture.
- Produit ⇾ Note & Recommandation : Liens pour les avis et suggestions.














