Backend NestJS pour plateforme VTC/Livraison Telima (Mali) - Auth OTP, Trips, Dispatch, Pricing, WebSocket
# Telima Backend
Backend NestJS pour la plateforme VTC & Livraison Telima (Mali).
## Stack
- **NestJS 10** + TypeScript
- **Prisma 5** + PostgreSQL avec extension PostGIS
- **Redis** (cache + adapter Socket.io)
- **JWT** (access + refresh avec rotation)
- **OTP 4 chiffres** (mock SMS en dev, Africa's Talking en prod)
## Prerequis
- Node.js 20+
- Docker & Docker Compose
## Installation
```bash
npm install
cp .env.example .env
```
## Demarrage local avec Docker
```bash
docker compose up -d
```
Cela demarre :
- **Postgres + PostGIS** sur le port 5432
- **Redis** sur le port 6379
- **API NestJS** sur le port 3000
## Demarrage en dev (sans Docker pour l'API)
```bash
docker compose up -d postgres redis
npm run prisma:generate
npm run prisma:migrate
npm run prisma:seed
npm run start:dev
```
## Scripts
| Script | Description |
|---|---|
| `npm run start:dev` | Demarrage en mode watch |
| `npm run build` | Compilation TypeScript |
| `npm run lint` | ESLint avec fix automatique |
| `npm run prisma:generate` | Generation du client Prisma |
| `npm run prisma:migrate` | Migration dev (cree + applique) |
| `npm run prisma:seed` | Seed (vehicle types + admin) |
| `npm run prisma:studio` | Prisma Studio (GUI DB) |
| `npm test` | Tests unitaires (Jest) |
## Structure des modules
```
src/
app.module.ts # Module racine
main.ts # Bootstrap (CORS, validation, static assets)
config/
env.validation.ts # Validation des variables d'environnement
prisma/
prisma.module.ts # Module global Prisma
prisma.service.ts # Service Prisma (connect/disconnect)
common/
decorators/ # @Public, @Roles, @CurrentUser
guards/ # RolesGuard
filters/ # HttpExceptionFilter (reponse JSON normalisee)
interceptors/ # ResponseInterceptor ({ success, data })
modules/
auth/ # OTP, JWT, guards, strategy
users/ # Profil utilisateur (GET/PATCH /users/me)
drivers/ # Registration, upload, valida …