# Xpeditis — Maritime Freight Booking Platform

Plateforme B2B SaaS permettant aux transitaires de rechercher, comparer et réserver du fret maritime en temps réel.

---

## Démarrage rapide

```bash
# 1. Installer les dépendances
npm run install:all

# 2. Démarrer l'infrastructure (PostgreSQL + Redis + MinIO)
docker-compose up -d

# 3. Configurer l'environnement
cp apps/backend/.env.example apps/backend/.env
cp apps/frontend/.env.example apps/frontend/.env.local

# 4. Exécuter les migrations
cd apps/backend && npm run migration:run && cd ../..

# 5. Démarrer les serveurs
npm run backend:dev    # http://localhost:4000 · Swagger: /api/docs
npm run frontend:dev   # http://localhost:3000
```

---

## Structure du projet

```
xpeditis/
├── apps/
│   ├── backend/          # NestJS 10 — Architecture hexagonale
│   │   └── src/
│   │       ├── domain/          # Logique métier pure (TypeScript)
│   │       ├── application/     # Controllers, DTOs, Guards
│   │       └── infrastructure/  # TypeORM, Redis, S3, Email, Stripe
│   └── frontend/         # Next.js 14 App Router
│       ├── app/[locale]/        # Routing i18n (fr, en)
│       └── src/                 # Components, hooks, lib/api
├── docker-compose.yml    # PostgreSQL 15 + Redis 7 + MinIO
└── docs/                 # Documentation complète
```

---

## Documentation

| Sujet | Fichier |
|-------|---------|
| Index complet | [docs/README.md](docs/README.md) |
| Architecture hexagonale + conventions | [CLAUDE.md](CLAUDE.md) |
| Vue d'ensemble système | [docs/architecture/overview.md](docs/architecture/overview.md) |
| Schéma BDD (21 tables) | [docs/architecture/database.md](docs/architecture/database.md) |
| Démarrage rapide | [docs/getting-started/quick-start.md](docs/getting-started/quick-start.md) |

---

## Commandes de développement

```bash
# Backend
npm run backend:dev       # Serveur avec hot-reload
npm run backend:test      # Tests unitaires Jest
npm run backend:lint      # ESLint
npm run backend:build     # Build production

# Frontend
npm run frontend:dev      # Serveur avec hot-reload
npm run frontend:test     # Tests unitaires Jest
npm run frontend:lint     # ESLint
cd apps/frontend && npm run test:e2e  # Playwright E2E

# Qualité
npm run format            # Prettier (tous les fichiers)

# Base de données
cd apps/backend
npm run migration:generate -- src/infrastructure/persistence/typeorm/migrations/NomMigration
npm run migration:run
npm run migration:revert
```

---

## Stack technique

### Backend

| Composant | Technologie |
|-----------|-------------|
| Framework | NestJS 10 + TypeScript 5 (strict) |
| Base de données | PostgreSQL 15 + TypeORM |
| Cache | Redis 7 (ioredis) |
| Auth | JWT (15min) + Refresh + OAuth2 + API Keys (Argon2) |
| Temps réel | Socket.IO |
| Email | Nodemailer + MJML |
| Paiements | Stripe |
| Stockage | S3/MinIO |
| Logging | nestjs-pino |
| Monitoring | Sentry |

### Frontend

| Composant | Technologie |
|-----------|-------------|
| Framework | Next.js 14 App Router + TypeScript |
| Styling | Tailwind CSS + shadcn/ui (Radix UI) |
| State serveur | TanStack Query v5 |
| Tables | TanStack Table v8 + Virtual |
| Formulaires | react-hook-form + zod |
| Temps réel | Socket.IO client |
| i18n | next-intl (fr, en) |
| Graphiques | recharts |

---

## Carriers intégrés

| Carrier | Code | Statut |
|---------|------|--------|
| Maersk | MAEU | Connecteur API |
| MSC | MSCU | Connecteur API |
| CMA CGM | CMDU | Connecteur API |
| Hapag-Lloyd | HLCU | Connecteur API |
| ONE | ONEY | Connecteur API |
| SSC Consolidation | — | CSV |
| ECU Worldwide | — | CSV + API |
| TCC Logistics | — | CSV |
| NVO Consolidation | — | CSV |

---

## Fonctionnalités principales

- **Recherche tarifs** : FCL (carriers API + cache Redis 15min) + LCL CSV
- **Réservation standard** : workflow 4 étapes, numéro WCM-YYYY-XXXXXX
- **Réservation CSV + Portail Carrier** : magic link, accept/reject
- **Dashboard** : KPI, graphiques, table interactive virtuelle
- **Auth** : JWT, OAuth2 (Google/Microsoft), API Keys, RBAC (5 rôles)
- **Abonnements** : Stripe (FREE/BRONZE/SILVER/GOLD/PLATINIUM)
- **Notifications** : WebSocket temps réel + webhooks tiers
- **GDPR** : export/suppression des données utilisateur
- **Blog** : gestion de contenu bilingue (fr/en)
- **Audit** : journal d'audit de toutes les actions

---

*Architecture hexagonale — NestJS 10 + Next.js 14 — PostgreSQL 15 + Redis 7*
