Fatou-tou/milnagourmet2
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
# Milna Gourmet - Salon du Yaourt ## 🌟 À propos de Milna Gourmet Milna Gourmet est une plateforme e-commerce complète spécialisée dans la vente de yaourts artisanaux au Gabon. Le projet comprend un salon virtuel offrant une expérience d'achat moderne avec des fonctionnalités avancées de personnalisation de produits, gestion des commandes et livraison. ### 🎯 Mission Être le premier salon du yaourt au Gabon, offrant des produits de qualité supérieure faits maison, combinant tradition et innovation moderne. ## ✨ Fonctionnalités principales ### 🛒 Catalogue de produits - **Yaourts crémeux** : Nature, Simple, Céréales, Chocolat - **Yaourts liquides** : Vanille, Bissap, Couscous, Coco, Mangue - Gestion des stocks et disponibilité en temps réel - Système de promotions et réductions ### 🎨 Créations personnalisées - **Tailles disponibles** : Moyen (2500F) et Maxi (3500F) - **Ingrédients personnalisables** : - Fruits : Fraise, Banane, Mangue, Ananas, Kiwi, etc. - Sauces : Caramel, Chocolat, Miel, Confiture, etc. - Céréales : Granola, Flocons d'avoine, Muesli, etc. - Calcul automatique des prix selon les options choisies ### 👥 Gestion utilisateurs - Inscription et authentification - Profils utilisateurs avec historique des commandes - Système de rôles (Client, Admin, Livreur) ### 📦 Gestion des commandes - Processus de commande complet - Suivi des statuts : En attente → Confirmée → En préparation → Prête → Livrée - Historique détaillé des commandes ### 🚚 Système de livraison - **Zones de livraison** : Libreville - Calcul automatique des frais de livraison - Assignation de livreurs selon les zones - Suivi en temps réel des livraisons ### 📊 Dashboard administrateur - Gestion des produits et catégories - Suivi des commandes et statistiques - Gestion des utilisateurs et livreurs - Analytics et rapports ## 🛠️ Technologies utilisées ### Backend - **Node.js** avec **Express.js** - Serveur API REST - **TypeScript** - Typage statique - **Prisma ORM** - Gestion de base de données - **MySQL** - Base de données relationnelle - **JWT** - Authentification sécurisée - **bcrypt** - Hashage des mots de passe - **Zod** - Validation des données - **Multer** - Gestion des fichiers uploadés ### Frontend - **React 18** avec **TypeScript** - **Vite** - Outil de build rapide - **React Router** - Navigation SPA - **Tailwind CSS** - Framework CSS utilitaire - **shadcn/ui** - Composants UI réutilisables - **React Query** - Gestion d'état serveur - **React Hook Form** - Gestion des formulaires - **Zod** - Validation des formulaires ### Outils de développement - **ESLint** - Linting du code - **Prettier** - Formatage automatique - **Husky** - Git hooks - **JSON Server** - API mock pour le développement frontend ## 🚀 Installation et démarrage ### Prérequis - Node.js 18+ - npm ou yarn - MySQL 8.0+ - Git ### Installation 1. **Cloner le repository** ```bash git clone <URL_DU_REPO> cd milna-gourmet2 ``` 2. **Installation des dépendances** ```bash # Backend cd back npm install # Frontend cd ../front npm install ``` 3. **Configuration de la base de données** ```bash cd back cp .env.example .env # Éditer .env avec vos paramètres MySQL ``` 4. **Migration de la base de données** ```bash npm run migrate npm run generate ``` ### Démarrage du projet #### Mode développement complet ```bash # Terminal 1 - API Backend cd back npm run dev # Terminal 2 - Frontend + API Mock cd front npm run dev:full ``` #### Démarrage séparé ```bash # API Backend uniquement cd back npm run dev # Frontend uniquement cd front npm run dev # API Mock (JSON Server) cd front npm run server ``` ### URLs de développement - **Frontend** : http://localhost:8080 - **API Backend** : http://localhost:3000 - **API Mock** : http://localhost:3001 ## 📁 Structure du projet ``` milna-gourmet2/ ├── back/ # API Backend │ ├── src/ │ │ ├── config/ # Configuration (DB, JWT, etc.) │ │ ├── controller/ # Contrôleurs API │ │ ├── middleware/ # Middlewares Express │ │ ├── repository/ # Couche d'accès données │ │ ├── routes/ # Définition des routes │ │ ├── services/ # Logique métier │ │ ├── types/ # Types TypeScript │ │ ├── utils/ # Utilitaires │ │ ├── validator/ # Validation avec Zod │ │ └── index.ts # Point d'entrée │ ├── prisma/ │ │ ├── schema.prisma # Schéma base de données │ │ └── migrations/ # Migrations Prisma │ └── package.json ├── front/ # Application Frontend │ ├── public/ │ │ ├── data.json # Données mock JSON Server │ │ └── assets/ # Images et ressources │ ├── src/ │ │ ├── components/ # Composants React │ │ │ ├── ui/ # Composants UI réutilisables │ │ │ ├── Home/ # Pages d'accueil │ │ │ ├── Product/ # Composants produits │ │ │ ├── Cart/ # Panier d'achat │ │ │ ├── Auth/ # Authentification │ │ │ ├── Admin/ # Interface admin │ │ │ └── Layout/ # Layout et navigation │ │ ├── pages/ # Pages principales │ │ ├── services/ # Services API │ │ ├── hooks/ # Hooks personnalisés │ │ ├── contexts/ # Contextes React │ │ ├── types/ # Types TypeScript │ │ └── lib/ # Utilitaires │ └── package.json └── README.md ``` ## 🔌 API Backend ### Endpoints principaux #### Produits - `GET /api/products` - Liste des produits - `POST /api/products` - Créer un produit - `PUT /api/products/:id` - Modifier un produit - `DELETE /api/products/:id` - Supprimer un produit #### Commandes - `GET /api/orders` - Liste des commandes - `POST /api/orders` - Créer une commande - `PUT /api/orders/:id/status` - Modifier le statut #### Utilisateurs - `POST /api/auth/login` - Connexion - `POST /api/auth/register` - Inscription - `GET /api/users/profile` - Profil utilisateur #### Créations personnalisées - `GET /api/creations/sizes` - Tailles disponibles - `GET /api/creations/options` - Options d'ingrédients - `POST /api/creations` - Créer une création personnalisée ### Authentification L'API utilise JWT pour l'authentification. Inclure le token dans l'en-tête : ``` Authorization: Bearer <token> ``` ## 🚀 Déploiement ### Backend (API) ```bash cd back npm run build npm start ``` ### Frontend ```bash cd front npm run build npm run preview ``` ### Variables d'environnement Créer un fichier `.env` dans le dossier `back/` : ```env DATABASE_URL="mysql://user:password@localhost:3306/milna_gourmet" JWT_SECRET="your-secret-key" PORT=3000 ```