forked from Ynov/ptitspas-ynov-back
159 lines
5.7 KiB
Markdown
159 lines
5.7 KiB
Markdown
# 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.
|