Repository files navigation # AlertProche API — Backend NestJS
API REST pour la plateforme citoyenne de protection des mineurs.
## Stack technique
- **Framework** : NestJS 11
- **Base de données** : MongoDB + Mongoose
- **Authentification** : JWT (passport-jwt)
- **Validation** : class-validator + class-transformer
- **Upload images** : Multer (stockage local `uploads/images/`)
- **Sécurité** : bcryptjs, CORS, validation des DTOs
## Prérequis
- Node.js >= 18
- MongoDB (local ou Atlas)
## Installation
```bash
npm install
```
## Configuration
Copier `.env.example` en `.env` et renseigner les variables :
```bash
cp .env.example .env
```
Variables importantes :
- `MONGODB_URI` : URI de connexion MongoDB
- `JWT_SECRET` : Clé secrète JWT (changer en production)
- `FRONTEND_URL` : URL du frontend Angular (CORS)
## Démarrage
```bash
# Développement (hot reload)
npm run start:dev
# Production
npm run build
npm run start:prod
```
## Seed (données de démo)
```bash
npx ts-node src/seed/seed.ts
```
Comptes créés :
| Rôle | Email | Mot de passe |
|------|-------|-------------|
| Admin | admin@alertproche.cm | Admin2026! |
| Modérateur | moderateur@alertproche.cm | Modo2026! |
| Standard | marie@example.cm | User2026! |
## Endpoints API
### Auth
| Méthode | Route | Auth | Description |
|---------|-------|------|-------------|
| POST | `/auth/register` | Non | Inscription |
| POST | `/auth/login` | Non | Connexion |
| GET | `/auth/profile` | JWT | Profil connecté |
| PATCH | `/auth/profile/pseudo` | JWT | Modifier pseudo |
### Posts
| Méthode | Route | Auth | Description |
|---------|-------|------|-------------|
| GET | `/posts` | Non | Flux (filtres: type, location) |
| GET | `/posts/:id` | Non | Détail d'un post |
| GET | `/posts/my-posts` | JWT | Mes publications |
| GET | `/posts/reported` | Modérateur/Admin | Posts signalés |
| POST | `/posts` | JWT | Créer (multipart/form-data) |
| PATCH | `/posts/:id` | JWT | Modifier |
| PATCH | `/posts/:id/toggle-active` | Modérateur/Admin | Désactiver/Réactiver |
| POST | `/posts/:id/report` | JWT | Signaler |
| DELETE | `/posts/:id/report` | Modérateur/Admin | Classer sans suite |
| DELETE | `/posts/:id` | JWT | Supprimer |
### Comments
| Méthode | Route | Auth | Description |
|---------|-------|------|-------------|
| GET | `/comments/post/:postId` | Non | Commentaires d'un post |
| GET | `/comments/my-comments` | JWT | Mes commentaires |
| POST | `/comments/post/:postId` | JWT | Créer un commentaire |
| DELETE | `/comments/:id` | JWT | Supprimer |
## Upload d'images
Les images sont stockées dans `uploads/images/` et servies via `/uploads/images/nom-fichier.jpg`.
Contraintes :
- Formats acceptés : JPEG, JPG, PNG
- Taille max : 5 Mo
## Modération automatique
Chaque création de post ou commentaire passe par le `ModerationService` :
1. **Filtre lexical** : dictionnaire de termes interdits
2. **Anti-doxxing** : regex numéros camerounais, CNI, passeports
En cas de violation → HTTP 422 avec message explicatif.
# AlertProche-Api
You can’t perform that action at this time.