# P'titsPas API Backend ✨

Ce dépôt contient le code source de l'API backend pour la plateforme **P'titsPas**. L'API est construite avec NestJS et est responsable de toute la logique métier, de la gestion des données et de l'authentification des utilisateurs.

---

## 📚 Table des matières

- [Technologies utilisées](#-technologies-utilisées)
- [Prérequis](#-prérequis)
- [Installation](#-installation)
- [Lancement de l'application](#-lancement-de-lapplication)
- [Scripts principaux](#-scripts-principaux)
- [Tests](#-tests)
- [Gestion des migrations](#-gestion-des-migrations)
- [Documentation de l'API](#-documentation-de-lapi)

---

## 🛠️ Technologies utilisées

- **Framework**: [NestJS](https://nestjs.com/) (TypeScript)
- **Base de données**: [PostgreSQL](https://www.postgresql.org/)
- **ORM**: [TypeORM](https://typeorm.io/)
- **Authentification**: JWT avec [Passport.js](http://www.passportjs.org/)
- **Stockage Fichiers**: [MinIO](https://min.io/) (Compatible S3)
- **Tâches Asynchrones**: [Redis](https://redis.io/) avec [BullMQ](https://bullmq.io/)
- **Conteneurisation**: [Docker](https://www.docker.com/)

---

## 📋 Prérequis

Avant de commencer, assurez-vous d'avoir installé les outils suivants sur votre machine :

- [Node.js](https://nodejs.org/) (v18 ou supérieure)
- [npm](https://www.npmjs.com/) ou [pnpm](https://pnpm.io/)
- [Docker](https://www.docker.com/products/docker-desktop/) et Docker Compose
- [Git](https://git-scm.com/)

---

## 🚀 Installation

1.  **Clonez le dépôt :**

    ```bash
    git clone https://github.com/votre-username/ptitspas-backend.git
    cd ptitspas-backend
    ```

2.  **Créez le fichier d'environnement :**
    Copiez le fichier d'exemple `.env.example` et renommez-le en `.env`. Ce fichier est ignoré par Git et contiendra vos secrets locaux.

    ```bash
    cp .env.example .env
    ```

    ➡️ **Important :** Ouvrez le fichier `.env` et remplissez les variables (identifiants de la base de données, secrets JWT, etc.).

3.  **Installez les dépendances du projet :**
    ```bash
    npm install
    ```

---

## ▶️ Lancement de l'application

### Méthode recommandée : avec Docker

Cette méthode lance l'ensemble des services nécessaires (API, base de données, MinIO, Redis) dans des conteneurs isolés.

```bash
docker-compose up --build
```

L'API sera accessible à l'adresse `http://localhost:3000` (ou le port que vous avez configuré dans votre `.env`).

### Méthode locale (pour le développement)

Cette méthode ne lance que le serveur NestJS. Assurez-vous que les autres services (PostgreSQL, Redis, etc.) sont déjà en cours d'exécution (par exemple, via Docker).

```
npm run start:dev
```

Le serveur redémarrera automatiquement à chaque modification de fichier.

---

## ⚙️ Scripts principaux

| Commande            | Description                                                           |
| :------------------ | :-------------------------------------------------------------------- |
| `npm run start:dev` | Lance le serveur en mode développement avec rechargement automatique. |
| `npm run build`     | Compile le projet TypeScript en JavaScript.                           |
| `npm start`         | Lance l'application depuis les fichiers compilés (mode production).   |
| `npm run lint`      | Analyse le code pour détecter les erreurs de style et de syntaxe.     |

---

## 🧪 Tests

Pour lancer les tests, utilisez les commandes suivantes :

| Commande           | Description                                                      |
| :----------------- | :--------------------------------------------------------------- |
| `npm test`         | Lance les tests unitaires.                                       |
| `npm run test:e2e` | Lance les tests de bout en bout (end-to-end).                    |
| `npm run test:cov` | Lance tous les tests et génère un rapport de couverture de code. |

---

## 🗄️ Gestion des migrations

La structure de la base de données est gérée par des fichiers de migration TypeORM.

1.  **Générer une nouvelle migration :**
    Après avoir modifié une entité TypeORM, générez automatiquement le fichier de migration correspondant.

    ```bash
    npm run migration:generate -- src/database/migrations/NomDeLaMigration
    ```

2.  **Appliquer les migrations :**
    Pour mettre à jour le schéma de votre base de données avec les nouvelles migrations.
    ```bash
    npm run migration:run
    ```

---

## 📖 Documentation de l'API

Une fois l'application lancée, la documentation de l'API générée avec **Swagger (OpenAPI)** est disponible à l'adresse suivante :

➡️ **[http://localhost:3000/api-docs](http://localhost:3000/api-docs)**

Cette interface vous permet d'explorer et de tester toutes les routes de l'API directement depuis votre navigateur.

Excellente idée. C'est un élément crucial qui définit les droits et les devoirs liés à votre code.

En me basant sur la section `10.5 Propriété intellectuelle et licence de l’application` de votre cahier des charges, j'ai rédigé une section "Licence" qui reflète précisément le statut propriétaire de votre projet.

Voici le `README.md` complet et mis à jour.

---

## 📜 Licence

Ce projet est distribué sous une **licence propriétaire**.

Le code source, la marque "P'titsPas" et la documentation associée sont la propriété exclusive de l'éditeur, Julien MARTIN.

Toute reproduction, distribution, modification ou utilisation du code source est strictement interdite sans un accord écrit préalable de l'auteur. Les clients et partenaires autorisés disposent d'une licence d'utilisation non-exclusive et non-transférable, conformément aux termes de leur contrat.

Pour toute question relative à l'utilisation ou à l'acquisition d'une licence, veuillez contacter l'auteur.
