xpeditis2.0/PRD.md
David-Henri ARNAUD e863399bb2
Some checks failed
CI / Lint & Format Check (push) Failing after 1m11s
CI / Test Backend (push) Failing after 1m32s
CI / Build Backend (push) Has been skipped
Security Audit / npm audit (push) Failing after 5s
Security Audit / Dependency Review (push) Has been skipped
CI / Test Frontend (push) Failing after 29s
CI / Build Frontend (push) Has been skipped
first commit
2025-10-07 18:39:32 +02:00

12 KiB
Raw Permalink Blame History

PRD — Xpeditis (MVP)

Produit : Xpeditis — plateforme B2B SaaS de réservation et gestion de fret maritime (équivalent maritime de WebCargo).

Auteur : Architecte logiciel senior (Hexagonal) — NextTs

Objectif du document : Décrire les besoins produit, les exigences fonctionnelles et techniques, les critères d'acceptation et la feuille de route pour livrer le MVP sous 46 mois.


1. Contexte & vision

Xpeditis fournit aux transitaires (freight forwarders) une interface unique pour :

  • Rechercher et comparer des tarifs maritimes en temps réel
  • Réserver des conteneurs en ligne
  • Gérer le cycle de vie des expéditions depuis un dashboard centralisé

Vision MVP : Livrer un produit minimal mais professionnel capable d'absorber 50100 réservations/mois pour 1020 transitaires early adopters et valider l'adéquation marché.


2. Objectifs business & KPI du MVP

Objectifs :

  • Onboard 1020 transitaires pilotes en 46 mois
  • Traiter 50100 réservations/mois
  • Taux de conversion recherche→réservation ≥ 3%
  • SLA recherche tarifs : 95% des requêtes < 1s (caching inclus)

KPI :

  • Nombre dutilisateurs actifs (DAU/MAU)
  • Nombre de bookings / mois
  • Taux derreurs API carriers
  • Temps moyen pour créer une réservation
  • Taux de rétention clients à 3 mois

3. Périmètre du MVP (Fonctionnalités critiques)

Priorités : CRITIQUE (Recherche tarifs, Réservation, Intégration carriers) ; HAUT (Auth, Dashboard). Modules détaillés cidessous reprennent et transforment les spécifications fournies en exigences mesurables.

MODULE 1 — Recherche de tarifs (CRITIQUE)

Fonctionnalités :

  • Endpoint API : POST /api/v1/rates/search (payload JSON, voir Schemas)
  • UI responsive : formulaire recherche + résultats en cards et en tableau
  • Critères : origine, destination (autocomplete 10k+ ports), conteneur, mode (FCL/LCL), date départ, poids/volume (LCL), marchandises dangereuses (classe IMO)
  • Résultats : carrier (logo), prix all-in (USD/EUR), surcharges détaillées, transit time (jours), ETD/ETA estimés, route (escales), disponibilité conteneurs, fréquence service, type navire, CO2 par conteneur
  • Filtrage & tri (prix, transit time, CO2), pagination (>20 résultats), export PDF/Excel

Contraintes techniques :

  • Cache Redis (TTL = 15 min pour tarifs spot)
  • Préchargement tarifs top 100 trade lanes (batch ou préfetch on startup)
  • Timeout API carriers = 5s, gestion des erreurs gracieuse
  • Retry / circuit breaker pour connectors

Livrables :

  • POST /api/v1/rates/search + tests unitaires
  • UI responsive (NextTs + React) résultats cards/table
  • OpenAPI/Swagger
  • Export PDF/Excel

Critères d'acceptation :

  • Requête type (origine/destination/contener/date) retourne < 2s 90% du temps (avec cache)
  • Tests unitaires couvrant comportements clé (cache hit/miss, fallback carriers)

MODULE 2 — Réservation (CRITIQUE)

Workflow multiétapes (≤4 étapes) :

  1. Sélection de l'offre (vérif dispo temps réel)
  2. Informations expéditeur/destinataire
  3. Détails conteneur
  4. Confirmation + T&C

Comportement post-booking :

  • Génération booking number WCM-YYYY-XXXXXX
  • Email confirmation HTML (MJML)
  • Notification push (si appli mobile)
  • Dashboard : entrée avec statut Pending Confirmation

API :

  • POST /api/v1/bookings (création)
  • GET /api/v1/bookings/:id (détail)

Livrables :

  • Formulaire multiétapes (validation front + back)
  • Template email MJML
  • PDF booking confirmation
  • Tests end-to-end (E2E)

Critères d'acceptation :

  • Processus de booking complet testé E2E (happy path + 3 erreurs courantes)
  • Booking créé et visible en dashboard avec PDF généré et email envoyé

MODULE 3 — Gestion des utilisateurs (HAUT)

Auth & sécurité :

  • Inscription email+pwd (pwd ≥12 chars, complexité)
  • Verification email par token
  • Login OAuth2 (Google Workspace, Microsoft 365)
  • JWT access 15 min / refresh 7 jours
  • TOTP 2FA optionnel
  • Reset password sécurisé
  • Session auto logout 2h inactivité

Organisation & RBAC :

  • Profils entreprise (company metadata, logo, documents compliance)
  • Roles : Admin, Manager, User, Viewer (RBAC)

Livrables :

  • Routes /auth/register, /auth/login, /auth/logout, /auth/refresh
  • Middleware d'auth pour protéger routes API
  • Admin panel pour gestion users
  • Onboarding flow
  • Tests de sécurité (OWASP Top10 checklist)

Critères d'acceptation :

  • Inscription + vérif email fonctionnelles
  • OAuth login testés sur GSuite
  • RBAC empêche accès non autorisé (tests)

MODULE 4 — Dashboard transitaire (HAUT)

Vue densemble :

  • KPI cards (bookings/mois, TEUs, revenus estimés, pending)
  • Charts (6 mois bookings, top trade lanes)
  • Alertes (retards, confirmations)

Liste bookings :

  • Table interactive (search fuzzy, filtres, tri, pagination)
  • Détail booking : timeline, docs, audit log, notes internes
  • Actions : view, edit, cancel, download

Livrables :

  • Dashboard responsive (Recharts/Chart.js)
  • Table (react-table) avec performance <1s load sur 1000 bookings

Critères d'acceptation :

  • Dashboard charge <1s pour dataset MVP (jusquà 5k rows backend)

MODULE 5 — Intégration carriers (CRITIQUE)

Phase 1 (MVP) : intégrations natives 35 carriers prioritaires : Maersk, MSC, CMA CGM, HapagLloyd, ONE

Pattern :

  • Connecteur par carrier (Strategy pattern)
  • Normalisation -> schéma interne commun (Rates, Surcharges, ETD/ETA, Equipment availability)
  • Retry, circuit breaker, logs et métriques
  • Rate limiting respecté
  • Tests dintégration

Livrables :

  • 3 connecteurs opérationnels (au minimum Maersk + 2 autres)
  • Mapping data -> schéma interne
  • Tests d'intégration automatiques

Critères d'acceptation :

  • Chaque connecteur répond dans 5s ou bascule sur fallback
  • Logs détaillés pour debugging

4. Architecture technique (haut niveau)

Principes

  • Architecture hexagonale (ports & adapters)
  • Backend API-first (OpenAPI), séparation claire domaine / infra
  • Frontend NextJS (TypeScript) — SSR/ISR selon besoin
  • Base de données relationnelle (Postgres) + Redis cache
  • Files/objects : S3-compatible (AWS S3 / MinIO)
  • Auth : OAuth + JWT
  • Deploy : Docker + orchestrator (k8s) ou Vercel (frontend) + managed backend

Composants & responsabilités

  • API Layer (Adapters externes) : Controllers, validation, auth middleware
  • Application Layer (Ports) : Use cases (searchRates, createBooking, confirmBooking)
  • Domain Layer (Core) : Entities (Booking, RateQuote, Carrier, Organization, User)
  • Infrastructure Adapters : DB repository (typeorm/prisma), carrier connectors, email (SES/Sendgrid), storage, Redis cache

Diagramme simplifié (textuel)

  • NextJS (UI) ↔ API Gateway (Node/Next API routes or Express) ↔ Application Services ↔ Repositories ↔ Postgres
  • Carrier APIs ↔ Carrier Connectors ↔ Application Services
  • Redis cache pour rates
  • S3 pour documents

Data model (extraits)

  • Organization { id, name, type, scac, address, logo_url, documents[] }
  • User { id, org_id, role, email, pwd_hash, totp_secret }
  • RateQuote { id, origin, destination, carrier_id, price_currency, price_value, surcharges[], etd, eta, transit_days, route, availability }
  • Booking { id, booking_number, user_id, org_id, rate_quote_id, shipper, consignee, containers[], status, created_at, updated_at }
  • Container { id, booking_id, type, container_number, vgm, temp, seal_number }

5. API Design — exemples clés

POST /api/v1/rates/search (résumé)

Payload (exemple) :

{
  "origin": "NLRTM",
  "destination": "CNSHA",
  "container_type": "40'HC",
  "mode": "FCL",
  "departure_date": "2025-11-01",
  "weight_kg": null,
  "volume_m3": null,
  "hazmat": false
}

Réponse (résumé) : retourne liste RateQuote paginée avec champs demandés (carrier, price, surcharges[], etd, eta, transit_days, route[], availability, frequency, vessel_type, co2_kg)

OpenAPI spec complète à générer : inclure schémas, codes d'erreur, exemples.


6. Sécurité & conformité

  • Chiffrement TLS 1.2+ pour tout trafic
  • Hashage mots de passe (Argon2id ou bcrypt≥12)
  • Stockage sécurisé des documents compliance (ACL S3)
  • Protection contre OWASP Top 10 (rate limiting, input validation, CSP headers)
  • Logs d'audit pour actions sensibles

7. Tests, monitoring et qualité

Tests :

  • Unit tests (coverage ciblée sur domain & use cases)
  • Integration tests (carrier connectors, DB)
  • E2E tests (workflow booking happy path + erreurs)

Monitoring :

  • Metrics (Prometheus) : latence API, error_rate, cache hit ratio
  • Traces (OpenTelemetry) pour request flow et debugging
  • Alerting (PagerDuty/Slack) pour erreurs critiques

8. Déploiement & infrastructure MVP

Environnements : dev / staging / production CI/CD : pipelines GitHub Actions (lint, unit tests, build, deploy) Infra :

  • Frontend : Vercel (NextJS) ou déploiement Docker sur k8s
  • Backend : Kubernetes (EKS/GKE) ou managed containers
  • Postgres managé (RDS/Cloud SQL)
  • Redis managé (Elasticache/MemoryDB)
  • S3 (AWS) ou équivalent

Backup & DR : backups quotidiens DB, snapshots S3, runbooks


9. Roadmap & jalons (46 mois)

Sprint 0 (2 semaines) : Setup repo, infra dev, charte tech, OpenAPI skeleton, ports/adapters scaffolding.

Phase 1 (68 semaines) :

  • Module Recherche (API rates search, UI basic, Redis cache, préchargement top100 lanes)
  • 12 connecteurs carriers (Maersk + 1)
  • Auth basique (email/password)

Phase 2 (68 semaines) :

  • Workflow Réservation (multi-step), génération booking, email template
  • Dashboard basique (liste bookings)
  • RBAC et organisation

Phase 3 (46 semaines) :

  • Intégrations carriers additionnelles (23)
  • Export PDF/Excel, E2E tests, monitoring, sécurité

Go-to-market (2 semaines) :

  • Onboarding early adopters, support, collecte feedback, KPIs tracking

Total estimé : 1624 semaines (46 mois)


10. Risques & mitigations

  • Accès aux APIs carriers : risque dobtention tardive daccès — Mitigation : commencer avec 12 partenaires prêts + fallback pricing (aggregated/spot data) et mock connectors.
  • Latence / disponibilité : Mitigation : Redis cache, timeouts, circuit breakers.
  • Sécurité des docs : Mitigation : chiffrement at-rest, ACLs, revue sécurité.
  • Adoption UX : Mitigation : tests utilisateurs rapides, onboarding guidé, support dédié aux early adopters.

11. Backlog priorisé (MVP → PostMVP)

MVP (priorité haute) : Rates search, Booking workflow, 3 carrier connectors, Auth & RBAC, Dashboard de base, Email confirmations, PDF generation.

PostMVP : Tarification contractuelle (contract rates), multi-currency invoicing, payments, optimisation CO2 reporting, SLA contracts carriers, advanced analytics, mobile app.


12. Annexes

  • Format booking number : WCM-YYYY-XXXXXX (XXXXXX = alphanumeric 6 chars unique)
  • TTL cache tarifs : 15 minutes (spot). Possibilité doverride pour contract rates.
  • Timeout carriers : 5s (configurable)
  • Port autocomplete : dataset 10k+ (IATA/UN LOCODE) — API local + fallback remote

13. Prochaines actions (immédiates)

  1. Valider le périmètre MVP et les 3 carriers prioritaires avec stakeholders.
  2. Kickoff technique — définir tech stack final (Prisma vs TypeORM, choice message broker éventuel).
  3. Créer le repo monorepo (apps/frontend / apps/backend / libs/domain / infra) et pipelines CI.
  4. Implémenter le contrat OpenAPI minimal pour POST /api/v1/rates/search et POST /api/v1/bookings.