Skip to content

Fatou-tou/milnagourmet2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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
```

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages