# Product Management System

Un système de gestion de produits, stocks et achats en PHP/HTML/JS et SQL, avec une architecture MVC et une API REST.

## 🛠 Installation

1. **Cloner le dépôt** :
   ```bash
   git clone https://github.com/fandam03/prod.git
   cd prod
   ```

2. **Configurer la base de données** :
   - Modifiez `config/database.php` avec vos identifiants MySQL.
   - Exécutez les migrations :
     ```bash
     php migrate.php
     ```
   - (Optionnel) Importez des données de test :
     ```bash
     mysql -u root -p product_management < database/seeds/sample_data.sql
     ```

3. **Configurer le serveur web** :
   - Pointez votre serveur web (Apache/Nginx) vers le dossier `public/`.
   - Assurez-vous que le module `mod_rewrite` est activé pour Apache.

4. **Installer les dépendances** (si vous utilisez Composer) :
   ```bash
   composer install
   ```

5. **Accéder à l'application** :
   - Ouvrez votre navigateur à l'URL configurée (ex: `http://localhost/prod/public`).

## 📁 Structure du projet

```
prod/
├── app/               # Code source (MVC)
│   ├── Controllers/   # Contrôleurs
│   ├── Models/        # Modèles
│   ├── Views/         # Vues
│   └── Routes/        # Routage
│
├── config/            # Configuration
├── database/          # Migrations et seeds
├── public/            # Point d'entrée web
│   ├── assets/        # CSS/JS
│   └── index.php       # Front Controller
│
├── migrate.php        # Script de migration
└── README.md
```

## 🔧 Fonctionnalités

- **Gestion des produits** : CRUD complet avec attributs personnalisés.
- **Gestion des stocks** : Suivi des entrées/sorties.
- **Gestion des achats** : Commandes auprès des fournisseurs.
- **Authentification** : Connexion et inscription des utilisateurs.
- **API REST** : Pour une intégration avec une application mobile.
- **Dashboard** : Statistiques et vue d'ensemble.

## 📡 API REST

Les endpoints API sont préfixés par `/api/` :

- **Produits** :
  - `GET /api/products` : Liste des produits.
  - `GET /api/products/{id}` : Détails d'un produit.
  - `POST /api/products` : Créer un produit.
  - `PUT /api/products/{id}` : Mettre à jour un produit.
  - `DELETE /api/products/{id}` : Supprimer un produit.

- **Authentification** :
  - `POST /api/login` : Connexion (retourne un token).

- **Achats** :
  - `GET /api/buys` : Liste des achats.
  - `POST /api/buys` : Créer un achat.

- **Stock** :
  - `GET /api/products/{id}/stock-history` : Historique du stock.
  - `POST /api/stock` : Mettre à jour le stock.

## 🔒 Sécurité

- **Mot de passe** : Hachés avec `password_hash()`.
- **SQL Injection** : Protégé par PDO et requêtes préparées.
- **HTTPS** : Recommandé pour la production.

## 🚀 Déploiement

1. **Serveur** : Apache/Nginx avec PHP 8.0+.
2. **Base de données** : MySQL 5.7+.
3. **Configuration** :
   - Mettez à jour `config/database.php` pour la production.
   - Désactivez le mode debug dans `config/app.php`.

## 🤝 Contribution

Les contributions sont les bienvenues ! Ouvrez une issue ou une pull request.

## 📜 Licence

MIT
