# FILE_CATALOG_2025-11-28

| Field | Value |
|---|---|
| Last Updated | 2025-11-28 (rev A) |
| Scope | Full repo (root configs, apps/api, apps/web, packages, scripts, tests) |
| Method | Revue manuelle fichier par fichier + conventions de nommage |
| Status | Stable (référence catalogue) |

## Root & Infra

| Path | Note |
|---|---|
| .DS_Store | root file |
| .dockerignore | root file |
| .editorconfig | root file |
| .env | root file |
| .env.development | root file |
| .env.example | root file |
| .env.production.cost-optimized | root file |
| .env.production.example | root file |
| .eslintignore | root file |
| .eslintrc-custom-rules.cjs | root file |
| .eslintrc.best-practices.js | root file |
| .eslintrc.cjs | root file |
| .eslintrc.type-safety.js | root file |
| .firebaserc | root file |
| .gitattributes | root file |
| .gitignore | root file |
| .npmrc | root file |
| .prettierrc.json | root file |
| .rgignore | root file |
| .ripgreprc | root file |
| .seed-checkpoint.json | root file |
| .watchmanconfig | root file |
| AGENTS.md | root file |
| AUDIT_RESULTS.txt | root file |
| COMMIT_MESSAGE.txt | root file |
| COMMIT_MESSAGE_POI_UPGRADE.txt | root file |
| COMMIT_MESSAGE_TRUTH_SOURCE.txt | root file |
| DARK_MODE_SUMMARY.txt | root file |
| DEPLOYMENT_CHECKLIST.md | root file |
| ENHANCEMENT_STATUS.txt | root file |
| FINAL_INTEGRATION_STATUS.md | root file |
| FOCUS_VALIDATION_RESULTS.txt | root file |
| GEMINI.md | root file |
| INTEGRATION_CHECK.md | root file |
| POI_OPTIMIZATIONS_SUMMARY.txt | root file |
| RECAP_ADMIN_IMPROVEMENTS.md | root file |
| cloudbuild.yaml | root file |
| codex.config.schema.json | root file |
| eslint.config.js | root file |
| eslint.config.ts | root file |
| firebase.json | root file |
| firestore.indexes.json | root file |
| layout-bar-fix.patch | root file |
| map-desktop.png | root file |
| nodemon.json | root file |
| overrides.json | root file |
| package-lock.json | root file |
| package.json | root file |
| planner-undo-redo.patch | root file |
| playwright.config.ts | root file |
| pnpm-lock.yaml | root file |
| pnpm-lock.yaml.backup | root file |
| pnpm-workspace.yaml | root file |
| serviceAccount.json | root file |
| settings.json | root file |
| tags | root file |
| tmp_vue_tsc.log | root file |
| tsconfig.json | root file |
| tsconfig.root.json | root file |
| turbo.json | root file |
| type-check-results.txt | root file |
| vitest.config.ts | root file |

## Backend (apps/api)

### admin

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/admin/admin-reward.controller.ts | controller | CRUD récompenses/badges côté admin |
| apps/api/src/modules/admin/admin-reward.schemas.ts | schemas | Zod pour opérations reward admin |
| apps/api/src/modules/admin/admin-reward.service.ts | service | Logique rewards (badges/quests) et permissions |
| apps/api/src/modules/admin/admin.analytics.controller.ts | controller | Expose métriques/heatmaps/retention pour dashboard admin |
| apps/api/src/modules/admin/admin.controller.ts | controller | Stats globales plateforme + liste utilisateurs |
| apps/api/src/modules/admin/admin.cost.controller.ts | controller | Endpoints coûts/quotas (Stripe/OpenAI/Mapbox) |
| apps/api/src/modules/admin/admin.incident.controller.ts | controller | Gestion incidents/alertes (création, statut) |
| apps/api/src/modules/admin/admin.middleware.ts | middleware | Vérifie rôle admin + attache contexte admin |
| apps/api/src/modules/admin/admin.module.ts | module | Plugin Fastify admin (registre routes + middleware) |
| apps/api/src/modules/admin/admin.repository.ts | repository | Accès Firestore/Redis pour stats, incidents, utilisateurs |
| apps/api/src/modules/admin/admin.routes.ts | routes | Déclarations routes admin + guards |
| apps/api/src/modules/admin/admin.schemas.ts | schemas | Zod schemas (admin stats, users, incidents) |
| apps/api/src/modules/admin/admin.service.ts | service | Agrégation stats, gestion utilisateurs, incidents |
| apps/api/src/modules/admin/gamification-admin.controller.ts | controller | Gestion templates/quêtes/challenges côté admin |
| apps/api/src/modules/admin/gamification-admin.routes.ts | routes | Routes admin gamification (templates, import/export) |
| apps/api/src/modules/admin/gamification-admin.service.ts | service | Logique CRUD templates gamification + cache |

### ai

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/ai/__tests__/ai.controller.test.ts | test | Vérifie réponses HTTP (suggestions, jobs, usage) |
| apps/api/src/modules/ai/__tests__/ai.middleware.test.ts | test | Valide quotas/rate limit middleware |
| apps/api/src/modules/ai/__tests__/ai.quota.test.ts | test | Map plans → limites journalières/mensuelles |
| apps/api/src/modules/ai/__tests__/ai.repository.test.ts | test | Persistance Redis/Firestore des suggestions |
| apps/api/src/modules/ai/__tests__/ai.routes.integration.test.ts | test | Parcourt routes Fastify AI end-to-end |
| apps/api/src/modules/ai/__tests__/ai.service.test.ts | test | Logique service (jobs, usage) |
| apps/api/src/modules/ai/__tests__/ai.worker.integration.test.ts | test | Pipeline worker OpenAI/Mapbox complet |
| apps/api/src/modules/ai/__tests__/poi.processor.test.ts | test | Normalisation et scoring des POI |
| apps/api/src/modules/ai/ai.controller.ts | controller | Handlers HTTP (suggest-pois, enhance-plan, usage, jobs) |
| apps/api/src/modules/ai/ai.middleware.ts | middleware | Applique quotas/rate-limit + attache usage |
| apps/api/src/modules/ai/ai.module.ts | module | Plugin Fastify AI (routes + middleware) |
| apps/api/src/modules/ai/ai.quota.ts | config | Tables de quotas par plan/tier |
| apps/api/src/modules/ai/ai.repository.ts | repository | Cache POI, persistance analytics/jobs (Redis/Firestore) |
| apps/api/src/modules/ai/ai.routes.ts | routes | Déclarations routes AI + validation Zod |
| apps/api/src/modules/ai/ai.schemas.ts | schemas | DTO Zod requêtes/réponses AI |
| apps/api/src/modules/ai/ai.service.ts | service | Orchestration jobs Bull + réponses synchrones |
| apps/api/src/modules/ai/cache-warmer.ts | worker | Warm cache POI à partir BDD/calls AI |
| apps/api/src/modules/ai/poi-database.service.ts | service | Lecture/écriture collection `poi_database` |
| apps/api/src/modules/ai/poi.processor.ts | processor | Filtre, nettoie, score suggestions multi-sources |

### analytics

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/analytics/__tests__/analytics.service.spec.ts | test | Mocks Firestore et valide agrégations funnels/usage |
| apps/api/src/modules/analytics/analytics.service.ts | service | Agrège events, funnels, heatmaps, usage (Firestore + Redis cache) |
| apps/api/src/modules/analytics/analytics.types.ts | types | Types pour funnels, heatmaps, feature usage |

### auth

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/auth/auth.controller.ts | controller | Sync Auth0 → Firestore, expose profil courant |
| apps/api/src/modules/auth/auth.module.ts | module | Plugin Fastify auth (/api/auth) |
| apps/api/src/modules/auth/auth.routes.ts | routes | POST /sync, GET /profile avec validation |
| apps/api/src/modules/auth/auth.service.ts | service | Merge claims + rôles Firestore, gère premium/plan |

### billing

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/billing/billing.constants.ts | config | IDs produits/prix Stripe, mappings plans → quotas |
| apps/api/src/modules/billing/billing.container.ts | wiring | Injections Stripe/Firestore pour tests/services |
| apps/api/src/modules/billing/billing.controller.ts | controller | Checkout/portal Stripe, usage, referrals |
| apps/api/src/modules/billing/billing.module.ts | module | Plugin Fastify billing (/api/billing) |
| apps/api/src/modules/billing/billing.repository.ts | repository | Persistance Firestore billing plans/referrals/usages |
| apps/api/src/modules/billing/billing.routes.ts | routes | Routes checkout, portal, summary, referral leaderboard |
| apps/api/src/modules/billing/billing.service.ts | service | Orchestration Stripe (sessions/webhooks), quotas, referrals |

### budget

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/budget/__tests__/budget.service.test.ts | test | Conversion multi-devises et agrégation dépenses |
| apps/api/src/modules/budget/budget.service.ts | service | Conversion devises (exchangerate.host) + calcul budget/expenses |
| apps/api/src/modules/budget/budget.types.ts | types | Types budgets/dépenses utilisés par service |

### clan

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/clan/clan.controller.ts | controller | CRUD clans, invitations, flux posts/membres |
| apps/api/src/modules/clan/clan.module.ts | module | Plugin Fastify clan (/api/clan) |
| apps/api/src/modules/clan/clan.repository.ts | repository | Firestore pour clans, posts, membres, messages |
| apps/api/src/modules/clan/clan.routes.ts | routes | Définition routes clan + guards auth |
| apps/api/src/modules/clan/clan.service.ts | service | Logique métier clans (membres, invites, feed) |

### collab

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/collab/__tests__/collab-issue-004.test.ts | test | Regression sync CRDT/presence (issue-004) |
| apps/api/src/modules/collab/__tests__/collab.service.test.ts | test | Merge Y.Doc + sérialisation Redis |
| apps/api/src/modules/collab/collab.controller.ts | controller | Endpoints sync CRDT/presence |
| apps/api/src/modules/collab/collab.module.ts | module | Plugin Fastify collab (/api/collab) |
| apps/api/src/modules/collab/collab.routes.ts | routes | Routes sync POST/GET + presence polling |
| apps/api/src/modules/collab/collab.service.ts | service | Gestion Y.Doc, compression, merge Redis |
| apps/api/src/modules/collab/sharing.repository.ts | repository | Firestore pour invitations/permissions de partage |
| apps/api/src/modules/collab/sharing.routes.compat.ts | routes | Routes compat partage héritées |
| apps/api/src/modules/collab/sharing.service.ts | service | Logique création liens partage, permissions plan |

### common

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/common/decorators/catchErrors.ts | decorator | Wrap controllers pour transformer exceptions en AppError |
| apps/api/src/common/errors/AppError.ts | errors | Hiérarchie d'erreurs métiers + mapping HTTP |
| apps/api/src/common/errors/index.ts | barrel | Exporte AppError et codes |
| apps/api/src/common/handlers/__tests__/error-handler.test.ts | test | Vérifie mapping AppError/Zod→réponses HTTP |
| apps/api/src/common/handlers/error-handler.ts | handler | Middleware global d'erreur (Sentry + payload standard) |
| apps/api/src/common/handlers/index.ts | barrel | Exporte handlers communs |
| apps/api/src/common/middleware/errorHandler.ts | middleware | Injecte error-handler dans Fastify |
| apps/api/src/common/types/firestore.ts | types | Types Firestore (Timestamp, converters) |
| apps/api/src/common/utils/__tests__/health.test.ts | test | Tests probes santé et seuils |
| apps/api/src/common/utils/__tests__/logger.test.ts | test | Tests createLogger (prefix/spans) |
| apps/api/src/common/utils/health.ts | util | Helpers pour status/health routes |
| apps/api/src/common/utils/logger.ts | util | createLogger pino + trace spans |
| apps/api/src/common/utils/normalize.ts | util | Normalisation générique (strings/coords) |

### core

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/core/auth/auth.middleware.ts | middleware | Helpers requireAuth/optionalAuth/admin (alt middleware) |
| apps/api/src/core/auth/auth0.ts | util | Vérification JWT Auth0 + extraction claims |
| apps/api/src/core/config/cors.ts | config | Politique CORS centralisée |
| apps/api/src/core/config/env.ts | config | Validation env (zod) + valeurs par défaut |
| apps/api/src/core/config/loadEnv.ts | bootstrap | Charge dotenv + appelle validation env |
| apps/api/src/core/cron/fuelRegeneration.ts | cron | Job quotidien régénération fuel gamification |
| apps/api/src/core/database/firebase.ts | bootstrap | Init Firebase Admin lazy, export db/auth/storage/rtDB |
| apps/api/src/core/database/redis.ts | bootstrap | Client Redis partagé (Upstash/ioredis) |
| apps/api/src/core/events/eventEmitter.ts | event bus | Emitter global backend |
| apps/api/src/core/events/gamificationListeners.ts | listeners | Écoute events planner/collab → points/badges |
| apps/api/src/core/events/seasonXPListeners.ts | listeners | Écoute events → progression saison/XP |
| apps/api/src/core/firebase/admin.ts | util | Helpers legacy Firebase admin |
| apps/api/src/core/modules.ts | module | Registre/charge modules Fastify (planner, ai, etc.) |
| apps/api/src/core/queue/ai-queue.ts | queue | Configuration Bull queue ai-jobs (concurrency, cleanup) |
| apps/api/src/core/queue/ai.worker.ts | worker | Worker ai-jobs (POI, enhance-plan) |
| apps/api/src/core/queue/index.ts | barrel | Exporte queue helpers |
| apps/api/src/core/redis/client.ts | client | Client Redis bas niveau (legacy) |
| apps/api/src/core/scripts/backfillQuotas.ts | script | Script CLI backfill quotas utilisateurs |
| apps/api/src/core/seeds/questTemplatesSeed.ts | seed | Seed Firestore templates de quêtes |
| apps/api/src/core/seeds/seasonConfigSeed.ts | seed | Seed config saisons gamification |
| apps/api/src/core/seeds/seedGamification.ts | seed | Seed données gamification complètes |

### gamification

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/gamification/__tests__/document-mapping.test.ts | test | Vérifie mapping Firestore → modèles gamification |
| apps/api/src/modules/gamification/__tests__/progress-updates.test.ts | test | Progression points/XP/quêtes |
| apps/api/src/modules/gamification/bingo.routes.ts | routes | Routes mini-jeu bingo (rewards) |
| apps/api/src/modules/gamification/bingo.service.ts | service | Logique bingo et attribution points |
| apps/api/src/modules/gamification/challenge.service.ts | service | Gestion défis (création, progression, récompenses) |
| apps/api/src/modules/gamification/gamification.controller.ts | controller | Profil gamification, leaderboard, badges |
| apps/api/src/modules/gamification/gamification.module.ts | module | Plugin Fastify gamification |
| apps/api/src/modules/gamification/gamification.repository.ts | repository | Firestore/Redis pour stats, badges, leaderboard |
| apps/api/src/modules/gamification/gamification.routes.ts | routes | Définition endpoints profil/leaderboard/achievements |
| apps/api/src/modules/gamification/gamification.service.ts | service | Points/badges/leaderboard, triggers rewards |
| apps/api/src/modules/gamification/lib/challenge-generator.ts | util | Génère défis à partir de templates |
| apps/api/src/modules/gamification/quest.service.ts | service | Quêtes quotidiennes/hebdo (crud + progression) |
| apps/api/src/modules/gamification/season.controller.ts | controller | Endpoints saisons/battle pass |
| apps/api/src/modules/gamification/season.service.ts | service | Config saisons, actions van, XP |

### live

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/live/__tests__/liveNavigation.service.participants.test.ts | test | Gestion participants/session live + statuts |
| apps/api/src/modules/live/__tests__/liveReplay.builder.test.ts | test | Génération replays à partir de traces live |
| apps/api/src/modules/live/live.controller.ts | controller | CRUD sessions live + chat + télémetrie |
| apps/api/src/modules/live/live.module.ts | module | Plugin Fastify live (/api/live) |
| apps/api/src/modules/live/live.routes.ts | routes | Routes sessions/chat/telemetry |
| apps/api/src/modules/live/live.service.ts | service | Persistance Firestore/RTDB des sessions live |
| apps/api/src/modules/live/liveNavigation.controller.ts | controller | Navigation en direct (ETA, étapes) endpoints |
| apps/api/src/modules/live/liveNavigation.service.ts | service | Calcul navigation live, polling, sécurité |
| apps/api/src/modules/live/liveReplay.builder.ts | builder | Construit replays à partir des logs de navigation |

### logging

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/logging/logging.controller.ts | controller | Ingestion/lecture logs (dev/ops) |
| apps/api/src/modules/logging/logging.module.ts | module | Plugin Fastify logging (/api/logging) |
| apps/api/src/modules/logging/logging.routes.ts | routes | Routes d'upload/health des logs |

### middleware

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/middleware/__tests__/auth-issue-005.test.ts | test | Regression merge roles Firestore/Auth0 |
| apps/api/src/middleware/auth.middleware.ts | middleware | Middleware principal Auth0+Firestore (onRequest) |
| apps/api/src/middleware/error.middleware.ts | middleware | Intercepte erreurs → error-handler |
| apps/api/src/middleware/validate.middleware.ts | middleware | Valide payloads avec Zod et renvoie AppError 400 |

### notifications

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/notifications/notifications.module.ts | module | Plugin Fastify notifications (/api/notifications) |
| apps/api/src/modules/notifications/notifications.repository.ts | repository | Firestore pour notifications (list/mark read) |
| apps/api/src/modules/notifications/notifications.routes.ts | routes | Routes list/unread/mark-read |
| apps/api/src/modules/notifications/notifications.schemas.ts | schemas | Zod pour pagination + update |
| apps/api/src/modules/notifications/notifications.service.ts | service | Génère, liste et marque notifications |

### planner

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/planner/__tests__/dashboard-insights.test.ts | test | Vérifie calcul métriques dashboard (distance, durée, budget) |
| apps/api/src/modules/planner/__tests__/planner.integration.test.ts | test | CRUD plan/stage end-to-end |
| apps/api/src/modules/planner/__tests__/planner.service.test.ts | test | Logique business (optimisme offline, merges) |
| apps/api/src/modules/planner/dashboard-insights.ts | util | Génère insights plans (stats, charts) |
| apps/api/src/modules/planner/planner-ai.service.ts | service | Intégration AI pour suggestions/optimisations planner |
| apps/api/src/modules/planner/planner.controller.ts | controller | Handlers plans/stages CRUD, optimize, sync |
| apps/api/src/modules/planner/planner.module.ts | module | Plugin Fastify planner (/api/planner) |
| apps/api/src/modules/planner/planner.repository.ts | repository | Firestore/Redis pour plans, stages, dashboard cache |
| apps/api/src/modules/planner/planner.routes.ts | routes | Routes plans, stages, optimize, sync |
| apps/api/src/modules/planner/planner.service.ts | service | Logique métier planner (optimistic, cache, events) |
| apps/api/src/modules/planner/route-optimizer.ts | util | Optimisation itinéraire (TSP heuristique/OSRM) |

### profile

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/profile/profile.controller.ts | controller | Mise à jour préférences/avatars/quotas |
| apps/api/src/modules/profile/profile.module.ts | module | Plugin Fastify profile (/api/profile) |
| apps/api/src/modules/profile/profile.routes.ts | routes | Routes préférences display/notifications/avatar |
| apps/api/src/modules/profile/profile.service.ts | service | Merge prefs, quotas, avatars + cache |

### root

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/server.ts | entrypoint | Bootstrap Fastify, plugins, Sentry, rate-limit, health |
| apps/api/src/test/setup.ts | setup | Setup Vitest (env mocks, globals) |
| apps/api/src/utils/logger.ts | util | Logger wrapper legacy (à converger vers common/utils/logger) |
| apps/api/src/utils/premium.ts | util | Helpers premium (droits, quotas, offer tiers) |
| apps/api/src/utils/response.ts | util | Helpers ApiResponse (payload succès/erreur) |
| apps/api/src/utils/sanitize.ts | util | Nettoyage inputs plans/stages/comments avant Firestore |

### routeOptimization

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/routeOptimization/routeOptimization.controller.ts | controller | Endpoints optimisation itinéraires (TSP) |
| apps/api/src/modules/routeOptimization/routeOptimization.module.ts | module | Plugin Fastify route optimization |
| apps/api/src/modules/routeOptimization/routeOptimization.routes.ts | routes | Routes optimisation (POST compare/solve) |
| apps/api/src/modules/routeOptimization/routeOptimization.schemas.ts | schemas | DTO Zod pour optimisation |
| apps/api/src/modules/routeOptimization/routeOptimization.service.ts | service | Solveur TSP/OSRM + contraintes |

### search

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/search/search.controller.ts | controller | Recherche publique, feed découverte, indexation |
| apps/api/src/modules/search/search.module.ts | module | Plugin Fastify search (/api/search) |
| apps/api/src/modules/search/search.repository.ts | repository | Firestore/Redis pour feed/index |
| apps/api/src/modules/search/search.routes.ts | routes | GET /search, /feed, POST/DELETE index |
| apps/api/src/modules/search/search.service.ts | service | Scoring, pagination, index/unindex plan partagés |

### services

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/services/__tests__/google-places.service.test.ts | test | Couverture requêtes/filtrage Google Places |
| apps/api/src/services/__tests__/openai-enhanced-context.test.ts | test | Prompt/context enrichi pour OpenAI |
| apps/api/src/services/__tests__/openai-issue-006.test.ts | test | Regression sécurité prompt (issue-006) |
| apps/api/src/services/__tests__/overpass.service.test.ts | test | Filtrage coordonnées Overpass/OSM |
| apps/api/src/services/aiModelSelector.service.ts | service | Choix dynamique du modèle OpenAI selon tier/coût |
| apps/api/src/services/analytics.service.ts | service | Service partagé d'analytics (events, funnels) |
| apps/api/src/services/cost-tracker.service.ts | service | Suivi coûts OpenAI/Mapbox/Redis + alertes |
| apps/api/src/services/google-places.service.ts | service | Intégration Google Places (POI fallback/validation) |
| apps/api/src/services/incident-manager.service.ts | service | Crée/ferme incidents, remonte alertes admin |
| apps/api/src/services/mapbox-places.service.ts | service | Intégration Mapbox Search (POI fallback) |
| apps/api/src/services/openai.service.ts | service | Client OpenAI central (API calls + retries) |
| apps/api/src/services/overpass.service.ts | service | Client Overpass OSM (POI gratuit) |

### social

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/social/social.service.ts | service | Flux social/live feed, clans, trends (rest/polling) |
| apps/api/src/modules/social/social.types.ts | types | Types feed/clan/social utilisés par service |

### users

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/users/__tests__/users.controller.test.ts | test | Endpoints admin ban/unban/update role |
| apps/api/src/modules/users/__tests__/users.service.test.ts | test | Gestion rôles/admin/premium côté service |
| apps/api/src/modules/users/users.controller.ts | controller | Handlers admin pour gestion utilisateurs |
| apps/api/src/modules/users/users.module.ts | module | Plugin Fastify users (/api/users) |
| apps/api/src/modules/users/users.repository.ts | repository | Firestore pour profils/roles/stats |
| apps/api/src/modules/users/users.routes.ts | routes | Routes admin users (list, status update) |
| apps/api/src/modules/users/users.schemas.ts | schemas | Zod schemas user admin |
| apps/api/src/modules/users/users.service.ts | service | Bans/roles, stats utilisateurs, caches |

### weather

| Path | Layer | Purpose |
|---|---|---|
| apps/api/src/modules/weather/weather.controller.ts | controller | Météo point + route + comparatif dates |
| apps/api/src/modules/weather/weather.routes.ts | routes | Routes météo publiques/privées |
| apps/api/src/modules/weather/weather.schemas.ts | schemas | Zod météo (coords, route) |
| apps/api/src/modules/weather/weather.service.ts | service | Appels OpenWeather + cache process-local |
| apps/api/src/modules/weather/weather.types.ts | types | Types forecast/segment météo |

## Frontend (apps/web)

### admin

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/admin/AdminLayout.vue | layout | Layout admin (sidebar + header + router-view) |
| apps/web/src/modules/admin/components/AdminSidebar.vue | component | Navigation admin (sections + filters) |
| apps/web/src/modules/admin/components/AlertsPanel.vue | component | Liste alertes/incidents avec actions rapides |
| apps/web/src/modules/admin/components/AnalyticsDashboard.vue | component | Tableau de bord métriques (engagement, funnels) |
| apps/web/src/modules/admin/components/BillingPlansAdminPanel.vue | component | Gestion plans/prix Stripe + promotions |
| apps/web/src/modules/admin/components/CostDashboard.vue | component | Vue coûts API (OpenAI/Mapbox/Redis) |
| apps/web/src/modules/admin/components/DataIntelligencePanel.vue | component | Panel analytics avancées (search/AI) |
| apps/web/src/modules/admin/components/DataPulseMaxBox.vue | component | KPI card mise en avant |
| apps/web/src/modules/admin/components/HealthHistoryChart.vue | component | Graphique historique uptime/latence |
| apps/web/src/modules/admin/components/HealthQuickStats.vue | component | Stats synthétiques de santé services |
| apps/web/src/modules/admin/components/HealthSuggestions.vue | component | Recommandations remédiation santé |
| apps/web/src/modules/admin/components/IncidentDashboard.vue | component | Gestion incidents (list, statut, assignation) |
| apps/web/src/modules/admin/components/LogsViewer.vue | component | Visualisation logs + filtres |
| apps/web/src/modules/admin/components/RewardConfigManager.vue | component | Configuration rewards/badges/quests admin |
| apps/web/src/modules/admin/components/ServiceComparison.vue | component | Comparaison services (perf, coûts) |
| apps/web/src/modules/admin/components/TrendsChart.vue | component | Courbes tendances métriques |
| apps/web/src/modules/admin/components/widgets/SectionHeader.vue | component | En-tête réutilisable pour sections admin |
| apps/web/src/modules/admin/components/widgets/StatCard.vue | component | Carte statistique réutilisable |
| apps/web/src/modules/admin/pages/AdminPage.mobile.vue | page | Shell mobile admin (layout + navigation) |
| apps/web/src/modules/admin/services/adminRewardService.ts | service | Client API admin rewards (badges/quests/challenges) |
| apps/web/src/modules/admin/services/adminService.ts | service | Client API admin (stats, users, incidents, cache) |
| apps/web/src/modules/admin/stores/adminStore.ts | store | Pinia store admin (state users/stats/health/cache) |
| apps/web/src/modules/admin/views/AuditView.vue | view | Vue audit/logs/modération |
| apps/web/src/modules/admin/views/BillingView.vue | view | Vue gestion facturation plans/prix/referrals |
| apps/web/src/modules/admin/views/CacheView.vue | view | Vue cache (invalidations, stats Redis) |
| apps/web/src/modules/admin/views/ContentView.vue | view | Vue modération contenu/feeds |
| apps/web/src/modules/admin/views/DashboardView.vue | view | Vue d'accueil admin avec KPIs |
| apps/web/src/modules/admin/views/GamificationView.vue | view | Vue templates quêtes/challenges/badges |
| apps/web/src/modules/admin/views/HealthView.vue | view | Vue santé infra/latence/services |
| apps/web/src/modules/admin/views/ModerationView.vue | view | File modération UGC (posts, commentaires) |
| apps/web/src/modules/admin/views/SettingsView.vue | view | Vue réglages admin (feature flags, toggles) |
| apps/web/src/modules/admin/views/UsersView.vue | view | Vue gestion utilisateurs (roles, ban/unban) |

### ai

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/ai/components/AIQuotaDisplay.vue | component | Affiche quota/usage AI + barres progressives |
| apps/web/src/modules/ai/components/SuggestionsList.vue | component | Liste suggestions POI/itinéraires avec actions |
| apps/web/src/modules/ai/services/aiService.ts | service | Client API AI (suggest-pois, enhance-plan, jobs, usage) |
| apps/web/src/modules/ai/stores/__tests__/aiStore.spec.ts | test | Tests Pinia store (cache, polling jobs) |
| apps/web/src/modules/ai/stores/aiStore.ts | store | Pinia store AI (cache suggestions, jobs, usage) |
| apps/web/src/modules/ai/utils/modelDisplay.ts | util | Mapping modèles AI → labels/cta UI |

### app

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/app/App.vue | root | Root Vue app wrapper (router-view + global providers) |
| apps/web/src/app/components/AppShell.vue | layout | Layout principal (header, drawer, nav adaptative burger/standard) |
| apps/web/src/app/components/ErrorBoundary.vue | component | Boundary UI affichant fallback + reset |
| apps/web/src/app/components/NetworkStatus.vue | component | Bannières état réseau/sync offline |
| apps/web/src/app/components/NotificationCenter.vue | component | Centre de notifications (smart toasts + panel) |
| apps/web/src/app/main.ts | bootstrap | Instancie Vue/Pinia/Quasar/Sentry + styles + harness E2E |
| apps/web/src/app/responsivePageLoader.ts | util | Charge variante mobile/web pour pages responsives |
| apps/web/src/app/router.ts | router | Routes + guards requiresAuth/Admin, prefetch lazy |
| apps/web/src/app/viewportOverride.ts | util | Override viewport meta pour iOS PWA |

### auth

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/auth/components/LoginForm.vue | component | Formulaire Auth0 (login) + CTA sociaux |
| apps/web/src/modules/auth/components/SignUpForm.vue | component | Formulaire Auth0 (signup) |
| apps/web/src/modules/auth/composables/useAuth.ts | composable | Hooks session (login/logout/token) |
| apps/web/src/modules/auth/composables/useAuthPageController.ts | composable | Contrôleur de page auth (mode login/signup, redirects) |
| apps/web/src/modules/auth/composables/useSessionMonitor.ts | composable | Surveille token expiré/renouvellement + redirection |
| apps/web/src/modules/auth/index.ts | barrel | Exporte composants/pages auth |
| apps/web/src/modules/auth/pages/AuthPage.mobile.vue | page | Page auth mobile (layout + forms) |
| apps/web/src/modules/auth/pages/AuthPage.web.vue | page | Page auth desktop |
| apps/web/src/modules/auth/services/authMockAdapter.ts | service | Adapter mock pour E2E/tests (bypass Auth0) |
| apps/web/src/modules/auth/services/authService.ts | service | Client API auth (/api/auth sync/profile) + Auth0 SPA |
| apps/web/src/modules/auth/stores/authStore.ts | store | Pinia store auth (profil, roles, tokens, session) |

### billing

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/billing/components/BillingPlanCard.vue | component | Carte plan/prix Stripe + CTA checkout |
| apps/web/src/modules/billing/pages/SubscriptionsPage.mobile.vue | page | Vue abonnement mobile (plans, usage, referrals) |
| apps/web/src/modules/billing/pages/SubscriptionsPage.vue | page | Vue abonnement desktop |
| apps/web/src/modules/billing/services/billingService.ts | service | Client API billing (plans, summary, checkout, portal, referrals) |
| apps/web/src/modules/billing/stores/billingStore.ts | store | Pinia store billing (plans, current plan, usage, referral stats) |

### clan

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/clan/__tests__/clan.e2e.spec.ts | test | Parcours e2e création/join clan et chat |
| apps/web/src/modules/clan/__tests__/ClanListPage.spec.ts | test | UI liste des clans |
| apps/web/src/modules/clan/__tests__/clanService.spec.ts | test | Client API clan (join/create/feed) |
| apps/web/src/modules/clan/__tests__/clanStore.spec.ts | test | Pinia clan store (state/mutations) |
| apps/web/src/modules/clan/components/ClanCard.vue | component | Carte clan (nom, membres, actions) |
| apps/web/src/modules/clan/components/ClanChat.vue | component | Chat temps réel (polling) d'un clan |
| apps/web/src/modules/clan/components/ClanComments.vue | component | Liste commentaires/threads clan |
| apps/web/src/modules/clan/components/ClanFeed.vue | component | Flux activité clan (posts, actions) |
| apps/web/src/modules/clan/components/ClanInviteItem.vue | component | Ligne invitation (accepter/refuser) |
| apps/web/src/modules/clan/components/ClanMembers.vue | component | Liste membres + rôles |
| apps/web/src/modules/clan/components/ClanPostCard.vue | component | Carte post clan (texte/media/actions) |
| apps/web/src/modules/clan/pages/ClanDetailPage.vue | page | Page détail clan (chat + feed + membres) |
| apps/web/src/modules/clan/pages/ClanListPage.vue | page | Page liste/cherche clans et rejoint |
| apps/web/src/modules/clan/services/clanService.ts | service | Client API clans (CRUD, feed, chat, invites) |
| apps/web/src/modules/clan/stores/clanStore.ts | store | Pinia store clans (liste, courant, invites) |

### collab

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/collab/components/CommentItem.vue | component | Affiche un commentaire/fil + actions (reply/delete) |
| apps/web/src/modules/collab/components/CommentsSection.vue | component | Section commentaires plan partagé |
| apps/web/src/modules/collab/components/ShareDialog.vue | component | Dialogue création lien partage (permissions) |
| apps/web/src/modules/collab/composables/__tests__/useCollaboration.test.ts | test | Hook collaboration (sync/presence) |
| apps/web/src/modules/collab/composables/useCollaboration.ts | composable | Abstrait sync Yjs/presence + actions partage |
| apps/web/src/modules/collab/pages/PublicPlanPage.vue | page | Page plan public (lecture/CTA login) |
| apps/web/src/modules/collab/services/collabSharingService.ts | service | Client API partage (create/list/delete) |
| apps/web/src/modules/collab/services/syncService.ts | service | Sync HTTP CRDT + presence polling |
| apps/web/src/modules/collab/stores/collabSharingStore.ts | store | Pinia store liens de partage/commentaires |

### components

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/components/mobile/MobileDialog.vue | component | Dialog mobile full-screen (stacked actions) |
| apps/web/src/components/mobile/MobileToast.vue | component | Toast mobile glissant |
| apps/web/src/components/ThemeToggle.vue | component | Switch thème clair/sombre/auto |
| apps/web/src/components/ui/AnimatedButton.vue | component | Bouton animé (hover/press) |
| apps/web/src/components/ui/EmptyState.vue | component | Etat vide générique (icône + CTA) |
| apps/web/src/components/ui/FloatingPanel.vue | component | Panel flottant glassmorphism |
| apps/web/src/components/ui/GlassCard.vue | component | Carte vitrée (fond blur + border) |
| apps/web/src/components/ui/GradientOrbs.vue | component | Arrière-plan décoratif orbs dégradés |
| apps/web/src/components/ui/IconButton.vue | component | Bouton icône arrondi |
| apps/web/src/components/ui/LoadingState.vue | component | Placeholder chargement/squelette |
| apps/web/src/components/ui/SearchBar.vue | component | Barre de recherche avec préfixe icône |
| apps/web/src/components/ui/StatCard.vue | component | Carte stats (valeur + variation) |
| apps/web/src/components/ui/Timeline.vue | component | Timeline verticale avec puces/texte |
| apps/web/src/components/UiBackgroundFX.vue | component | Effets de fond global (FX visuels) |
| apps/web/src/components/UiBackgroundFXDevPanel.vue | component | Panneau debug des FX de fond |

### composables

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/composables/__tests__/useBatteryStatus.test.ts | test | Compose battery status unit tests |
| apps/web/src/composables/useBatteryStatus.ts | composable | Surveille batterie (niveau/charge) + flags low/critical |
| apps/web/src/composables/useLanguage.ts | composable | Langue courante + changement i18n |
| apps/web/src/composables/useMobileDialog.ts | composable | Gestion dialogues mobiles (open/close stack) |
| apps/web/src/composables/useMobileToast.ts | composable | Gestion toasts mobiles |
| apps/web/src/composables/useNotify.ts | composable | Wrapper Quasar notify + thèmes app |
| apps/web/src/composables/usePOIName.ts | composable | Résout nom POI (multi-source, fallback) |
| apps/web/src/composables/useTheme.ts | composable | Gestion thème (light/dark/auto) + persistence |
| apps/web/src/composables/useVoiceCommands.ts | composable | Hooks commande vocale pour navigation/actions |

### explore

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/explore/components/ExplorePlanCard.vue | component | Carte plan public (stats, owner, CTA) |
| apps/web/src/modules/explore/pages/ExplorePage.mobile.vue | page | Page explore mobile (feed plans publics) |
| apps/web/src/modules/explore/pages/ExplorePage.web.vue | page | Page explore desktop |
| apps/web/src/modules/explore/stores/publicPlannerStore.ts | store | Pinia store plans publics (fetch, pagination) |

### gamification

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/gamification/components/BadgeCard.vue | component | Carte badge (nom, niveau, état) |
| apps/web/src/modules/gamification/components/BadgeGrid.vue | component | Grille de badges obtenus/à débloquer |
| apps/web/src/modules/gamification/components/LeaderboardTable.vue | component | Tableau classement (rang, points, deltas) |
| apps/web/src/modules/gamification/components/ProfileCard.vue | component | Profil gamification (points, niveau, progression) |
| apps/web/src/modules/gamification/components/QuestList.vue | component | Liste quêtes/challenges avec statuts |
| apps/web/src/modules/gamification/components/StatsCard.vue | component | Carte stats (distance, jours actifs, etc.) |
| apps/web/src/modules/gamification/composables/useLeaderboardPageController.ts | composable | Orchestration page leaderboard (fetch, filters) |
| apps/web/src/modules/gamification/pages/LeaderboardPage.mobile.vue | page | Page leaderboard mobile |
| apps/web/src/modules/gamification/pages/LeaderboardPage.web.vue | page | Page leaderboard desktop |
| apps/web/src/modules/gamification/services/bingoService.ts | service | Génère données bingo gamification |
| apps/web/src/modules/gamification/services/gamificationHandlers.ts | service | Écoute évènements (plan/AI/offline) → rewards |
| apps/web/src/modules/gamification/services/gamificationService.ts | service | Client API gamification (profil, badges, quests, fuel) |
| apps/web/src/modules/gamification/stores/__tests__/gamificationStore.test.ts | test | Pinia store (profil, leaderboard, fuel) |
| apps/web/src/modules/gamification/stores/gamificationStore.ts | store | Store gamification (profil, leaderboard, fuel, quests) |

### live

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/live/components/CreateSessionDialog.vue | component | Dialogue création session live (nom, visibilité) |
| apps/web/src/modules/live/components/EmergencyButton.vue | component | Bouton alerte SOS dans navigation live |
| apps/web/src/modules/live/components/JoinSessionDialog.vue | component | Dialogue rejoindre session live par code |
| apps/web/src/modules/live/components/LiveChat.vue | component | Chat de session live (polling) |
| apps/web/src/modules/live/components/LiveParticipantsList.vue | component | Liste participants + statut/position |
| apps/web/src/modules/live/services/geolocationService.ts | service | Wrapper Geolocation API (watch, batching) |
| apps/web/src/modules/live/services/liveNavigationService.ts | service | Client API live (sessions, chat, telemetry) |
| apps/web/src/modules/live/stores/liveNavigationStore.ts | store | Store navigation live (sessions, participants, telemetry) |

### location

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/location/services/locationService.ts | service | Gestion géoloc navigateur, batching + fallback |
| apps/web/src/modules/location/stores/locationTrackingStore.ts | store | Store localisation (position actuelle, précision, historique) |

### logging

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/logging/composables/useErrorLogger.ts | composable | Capture erreurs UI et envoi logger backend |
| apps/web/src/modules/logging/plugins/error-logger.plugin.ts | plugin | Plugin Vue pour logger console errors |
| apps/web/src/modules/logging/services/error-logging.service.ts | service | Envoi erreurs vers backend /analytics |
| apps/web/src/modules/logging/types/console-error.types.ts | types | Types erreurs console (stack, message) |

### map

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/map/__tests__/mapPresetManager.integration.spec.ts | test | Intégration presets (layouts, panels) |
| apps/web/src/modules/map/__tests__/MapView.spec.ts | test | Comportement MapView (events, resize, sources) |
| apps/web/src/modules/map/components/__tests__/RoutePreviewMini.test.ts | test | Preview des 3 prochaines instructions |
| apps/web/src/modules/map/components/ai/AIAssistant.vue | component | Assistant IA sur carte (suggestions contextuelles) |
| apps/web/src/modules/map/components/ar/ARCameraView.vue | component | Vue caméra AR avec overlays itinéraire |
| apps/web/src/modules/map/components/ar/ARControlsPanel.vue | component | Panneau contrôles AR (calibration, mode) |
| apps/web/src/modules/map/components/CollaborationCursors.vue | component | Cursors/avatars collaborateurs sur carte |
| apps/web/src/modules/map/components/controls/SearchControl.vue | component | Barre recherche map (POI/coords) |
| apps/web/src/modules/map/components/controls/StyleSwitcher.vue | component | Sélecteur style Mapbox |
| apps/web/src/modules/map/components/FiltersPanel.vue | component | Filtres couches (trafic, météo, POI) |
| apps/web/src/modules/map/components/MapActionStack.vue | component | Pile actions carte (zoom, centrer, tracer) |
| apps/web/src/modules/map/components/MapFloatingControls.vue | component | Groupe contrôles flottants (locate, compass, layers) |
| apps/web/src/modules/map/components/MapModeToggle.vue | component | Toggle modes explore/navigate/signal |
| apps/web/src/modules/map/components/MapPresetLayout.vue | component | Layout par preset (panels, barres, HUD) |
| apps/web/src/modules/map/components/MapRadialMenu.vue | component | Menu radial actions rapides sur carte |
| apps/web/src/modules/map/components/MapScenarioTray.vue | component | Sélecteur de scénarios (explore, navigate, signal) |
| apps/web/src/modules/map/components/MapSegmentInsightsCard.vue | component | Carte insights segment (distance, pente, temps) |
| apps/web/src/modules/map/components/MapView.vue | component | Renderer Mapbox principal (markers, segments, emits) |
| apps/web/src/modules/map/components/mobile/BottomTabNavigator.vue | component | Barre nav mobile spécifique map |
| apps/web/src/modules/map/components/mobile/ContextBarMobile.vue | component | Barre contexte mobile (info plan + actions) |
| apps/web/src/modules/map/components/mobile/FilterChipsBar.vue | component | Barre chips filtres mobile |
| apps/web/src/modules/map/components/mobile/IncidentReportDialog.vue | component | Formulaire déclaration incident (route) |
| apps/web/src/modules/map/components/mobile/ModernNavigationHUD.vue | component | HUD navigation mobile (ETA, vitesse, étapes) |
| apps/web/src/modules/map/components/mobile/POIBottomSheet.vue | component | Bottom sheet détails POI/stage |
| apps/web/src/modules/map/components/mobile/QuickActionBar.vue | component | Barre actions rapides (centrer, ajout) |
| apps/web/src/modules/map/components/mobile/ReportFAB.vue | component | FAB signalement incident |
| apps/web/src/modules/map/components/mobile/SmartSuggestionsBar.vue | component | Barre suggestions IA contextuelles |
| apps/web/src/modules/map/components/mobile/StageListSheet.vue | component | Sheet liste étapes pour mobile |
| apps/web/src/modules/map/components/NavigationHUD.vue | component | HUD navigation desktop (ETA, distance, étapes) |
| apps/web/src/modules/map/components/panels/AIRecommendationsPanel.vue | component | Panel recommandations IA (POI/segments) |
| apps/web/src/modules/map/components/panels/BookingDetailsPanel.vue | component | Panel détail réservation (lodging/etc.) |
| apps/web/src/modules/map/components/panels/BookingListPanel.vue | component | Liste réservations liées au plan |
| apps/web/src/modules/map/components/panels/BookingPanel.vue | component | Panel réservation/CTA booking |
| apps/web/src/modules/map/components/panels/ChartsPanel.vue | component | Graphiques map (altitude, vitesse) |
| apps/web/src/modules/map/components/panels/DiscoveryPanel.vue | component | Panel découverte POI/context |
| apps/web/src/modules/map/components/panels/ExplorationPanel.vue | component | Panel exploration avec cartes presets |
| apps/web/src/modules/map/components/panels/KPICardsPanel.vue | component | Cartes KPI (distance, temps, fuel) |
| apps/web/src/modules/map/components/panels/MapLegend.vue | component | Légende couches carte |
| apps/web/src/modules/map/components/panels/OfflineManager.vue | component | Gestion cartes offline (téléchargement/état) |
| apps/web/src/modules/map/components/panels/ReportFormPanel.vue | component | Formulaire signalement incident côté panel |
| apps/web/src/modules/map/components/panels/StageDetailsPanel.vue | component | Détails d'une étape (notes, actions) |
| apps/web/src/modules/map/components/POICardsPanel.vue | component | Liste cartes POI associées à la carte |
| apps/web/src/modules/map/components/RoutePreviewMini.vue | component | Mini preview des prochaines instructions |
| apps/web/src/modules/map/components/TimelinePanel.vue | component | Panel timeline des étapes sur carte |
| apps/web/src/modules/map/components/TimelineSlider.vue | component | Slider timeline (scrub étapes/segments) |
| apps/web/src/modules/map/components/tools/ContextMenu.vue | component | Menu contextuel map (copy coords, add POI) |
| apps/web/src/modules/map/components/tools/DrawingTools.vue | component | Outils dessin (polylines/areas) |
| apps/web/src/modules/map/components/web/MapContextBar.vue | component | Barre contexte desktop (plan info + actions) |
| apps/web/src/modules/map/components/web/MapFeatureToolbar.vue | component | Toolbar features desktop (layer toggles, draw) |
| apps/web/src/modules/map/composables/__tests__/useLiveOverlayLayers.test.ts | test | Tests couches overlay live |
| apps/web/src/modules/map/composables/useContextDetection.ts | composable | Détecte contexte (mode/scénario) selon état |
| apps/web/src/modules/map/composables/useLiveOverlayLayers.ts | composable | Gère sources/layers overlay live/presence |
| apps/web/src/modules/map/composables/useMapbox.ts | composable | Hook Mapbox (init tokens, events, cleanup) |
| apps/web/src/modules/map/composables/useMapFeatureToggles.ts | composable | Flags d'activation des features map |
| apps/web/src/modules/map/composables/useMapPageController.ts | composable | Contrôleur page map (routing panels, presets) |
| apps/web/src/modules/map/composables/useMapPageCore.ts | composable | Logique partagée map (state, watchers) |
| apps/web/src/modules/map/composables/useMapPresetManager.ts | composable | Gestion presets (layouts, toggles, caches) |
| apps/web/src/modules/map/composables/useMapScenarios.ts | composable | Définit scénarios map (explore/navigate/signal) |
| apps/web/src/modules/map/composables/useMapUIState.ts | composable | State UI map (panels ouverts, sélection) |
| apps/web/src/modules/map/composables/useMapVoiceCommands.ts | composable | Commandes vocales pour carte/navigation |
| apps/web/src/modules/map/composables/useNavigationGuidance.ts | composable | Guidance navigation (instruction courante + ETA) |
| apps/web/src/modules/map/composables/useOfflineMap.ts | composable | Gestion offline (tuiles, statut, downloads) |
| apps/web/src/modules/map/composables/usePlanRouteTrace.ts | composable | Trace route depuis plan (segments, selection) |
| apps/web/src/modules/map/composables/useSmartSuggestions.ts | composable | Suggestions IA contextuelles sur carte |
| apps/web/src/modules/map/pages/MapPage.mobile.vue | page | Page map mobile (presets, HUD, panels) |
| apps/web/src/modules/map/pages/MapPage.web.vue | page | Page map desktop |
| apps/web/src/modules/map/services/advancedRoutingService.ts | service | Calcul itinéraires avancés (multi-stop, prefer roads) |
| apps/web/src/modules/map/services/mapboxMapsService.ts | service | Gestion Mapbox GL (sources, layers, tokens) |
| apps/web/src/modules/map/services/mapVisualizationService.ts | service | Génère couches/symboles, couleurs, styles |
| apps/web/src/modules/map/services/osrmRoutingService.ts | service | Client OSRM pour routage + alternatives |
| apps/web/src/modules/map/services/weatherService.ts | service | Client météo pour overlays carte |
| apps/web/src/modules/map/stores/mapStore.ts | store | Store map (planContext, prefs, overlays) |
| apps/web/src/modules/map/styles/mapbox-markers.css | style | Styles markers Mapbox |
| apps/web/src/modules/map/types/mapPage.types.ts | types | Types pour pages map (UI state, contexts) |
| apps/web/src/modules/map/utils/mapFormatters.ts | util | Helpers format (distances, durées, unités) |
| apps/web/src/modules/map/utils/presetHelpers.ts | util | Helpers presets (merge, defaults) |
| apps/web/src/modules/map/utils/staticMap.ts | util | Génère URLs/static snapshots Mapbox |

### notifications

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/notifications/composables/useNotifications.ts | composable | Polling notifications (list/unread) + toasts |
| apps/web/src/modules/notifications/services/notificationsService.ts | service | Client API notifications (list, mark-read) |
| apps/web/src/modules/notifications/utils/notificationTheme.ts | util | Thèmes/couleurs par type de notification |

### offline

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/offline/composables/useSyncQueue.ts | composable | Expose état de la file offline + actions retry |
| apps/web/src/modules/offline/db/schema.ts | schema | Schéma Dexie (plans, stages, queue) |
| apps/web/src/modules/offline/services/indexedDBService.ts | service | CRUD Dexie pour plans/queue |
| apps/web/src/modules/offline/services/networkQualityService.spec.ts | test | Tests détection qualité réseau |
| apps/web/src/modules/offline/services/networkQualityService.ts | service | Mesure latence/bande passante → mode adaptatif |
| apps/web/src/modules/offline/services/syncQueue.ts | service | File offline (enqueue/dequeue, retry/backoff) |
| apps/web/src/modules/offline/services/syncQueueService.ts | service | Orchestration sync queue + timers |
| apps/web/src/modules/offline/stores/offlineStore.ts | store | Store offline (pending, failed ops, flags) |

### planner

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/planner/components/AISuggestionsPanel.vue | component | Panel suggestions IA (POI/itinéraires) pour le planner |
| apps/web/src/modules/planner/components/ControllerPanel.vue | component | Panneau commandes principales (actions plan/offline) |
| apps/web/src/modules/planner/components/controllers/VoiceController.vue | component | Contrôles vocaux (démarrer/stopper, intents planner) |
| apps/web/src/modules/planner/components/controllers/WeatherController.vue | component | Contrôleur météo (overlay + rafraîchissement) |
| apps/web/src/modules/planner/components/DashboardAIAssistant.vue | component | Assistant IA dashboard (version legacy) |
| apps/web/src/modules/planner/components/DashboardAIAssistantNew.vue | component | Assistant IA dashboard (nouvelle UI) |
| apps/web/src/modules/planner/components/DashboardCard.vue | component | Carte générique dashboard |
| apps/web/src/modules/planner/components/DashboardEmptyState.vue | component | État vide dashboard (CTA démarrer plan) |
| apps/web/src/modules/planner/components/DashboardMobileGlanceCards.vue | component | Cartes métriques rapides (mobile) |
| apps/web/src/modules/planner/components/DashboardMobileHero.vue | component | Hero mobile (plan sélectionné + CTA) |
| apps/web/src/modules/planner/components/DashboardMobileJourneyProgress.vue | component | Progression trajet mobile (étapes complétées) |
| apps/web/src/modules/planner/components/DashboardMobileMetricsGrid.vue | component | Grille métriques mobile (distance, temps, budget) |
| apps/web/src/modules/planner/components/DashboardMobileSignalMode.vue | component | HUD mode signal/offline mobile |
| apps/web/src/modules/planner/components/DashboardMobileViewMode.vue | component | Switch vue mobile (plan/signal/overview) |
| apps/web/src/modules/planner/components/DashboardPlanList.vue | component | Liste des plans sur dashboard |
| apps/web/src/modules/planner/components/DashboardToolbar.vue | component | Toolbar dashboard (filtres, actions) |
| apps/web/src/modules/planner/components/DashboardTripMap.vue | component | Carte miniature du plan dans dashboard |
| apps/web/src/modules/planner/components/DashboardWebHeader.vue | component | Header dashboard desktop |
| apps/web/src/modules/planner/components/LayoutSwitcher.vue | component | Bascule layout plan (liste vs timeline vs map) |
| apps/web/src/modules/planner/components/map/Map3DToggle.vue | component | Toggle mode 3D carte |
| apps/web/src/modules/planner/components/map/MapCompass.vue | component | Boussole map |
| apps/web/src/modules/planner/components/map/MapFullscreenToggle.vue | component | Bouton plein écran carte |
| apps/web/src/modules/planner/components/map/MapMeasureTool.vue | component | Outil mesure distance/surface |
| apps/web/src/modules/planner/components/map/MapSearchBox.vue | component | Recherche POI/étapes via barre carte |
| apps/web/src/modules/planner/components/map/MapStyleSwitcher.vue | component | Sélecteur style Mapbox |
| apps/web/src/modules/planner/components/map/MapZoomControls.vue | component | Contrôles zoom dédiés planner |
| apps/web/src/modules/planner/components/map/RoutePreviewCard.vue | component | Carte prévisualisation itinéraire (stats + CTA) |
| apps/web/src/modules/planner/components/map/WeatherOverlayControls.vue | component | Toggles overlays météo sur carte |
| apps/web/src/modules/planner/components/PlanActionMenu.vue | component | Menu actions plan (dupliquer, partager, supprimer) |
| apps/web/src/modules/planner/components/PlanCard.vue | component | Carte plan (nom, stats, actions rapides) |
| apps/web/src/modules/planner/components/PlanForm.vue | component | Formulaire création/édition plan |
| apps/web/src/modules/planner/components/PlanGeneratorDialog.vue | component | Dialogue génération plan via IA |
| apps/web/src/modules/planner/components/PlannerConfigLocationEditor.vue | component | Éditeur localisation/départ/arrivée |
| apps/web/src/modules/planner/components/PlannerConfigSummaryRow.vue | component | Ligne de résumé configuration plan |
| apps/web/src/modules/planner/components/PlannerConfigurationPanel.vue | component | Panel configuration (dates, budget, prefs) |
| apps/web/src/modules/planner/components/PlannerControlSwitches.vue | component | Switches options (offline, sync, nav) |
| apps/web/src/modules/planner/components/PlannerInsightsPanel.vue | component | Panel insights (statistiques plan) |
| apps/web/src/modules/planner/components/PlannerMapPreview.vue | component | Prévisualisation carte compacte |
| apps/web/src/modules/planner/components/PlannerPresetPicker.vue | component | Sélecteur presets (explore/plan/copilot) |
| apps/web/src/modules/planner/components/PlannerTravelProfile.vue | component | Choix profil de conduite/vitesse |
| apps/web/src/modules/planner/components/PlannerWizardNav.vue | component | Navigation étapes wizard |
| apps/web/src/modules/planner/components/PlannerWizardWeb.vue | component | Wizard multi-étapes web |
| apps/web/src/modules/planner/components/PlanSettings.vue | component | Paramètres plan (visibilité, partages) |
| apps/web/src/modules/planner/components/PlanTitleEditor.vue | component | Éditeur titre/description plan |
| apps/web/src/modules/planner/components/POIDiscoveryPanel.vue | component | Panel découverte POI (IA + filtres) |
| apps/web/src/modules/planner/components/RouteAISearch.vue | component | Barre de recherche IA pour itinéraires/POI |
| apps/web/src/modules/planner/components/RouteSegment.vue | component | Affichage segment (distance, durée, actions) |
| apps/web/src/modules/planner/components/safeDraggable.ts | util | Wrapper draggable sécurisé (SSR/mobile) |
| apps/web/src/modules/planner/components/shared/DashboardCollabSection.vue | component | Section collaboration (partages, présence) |
| apps/web/src/modules/planner/components/shared/DashboardGlanceCards.vue | component | Cartes aperçu (distance, étapes, météo) |
| apps/web/src/modules/planner/components/shared/DashboardHero.vue | component | Hero dashboard (CTA + metrics) |
| apps/web/src/modules/planner/components/shared/DashboardJourneyProgress.vue | component | Progression du voyage (timeline) |
| apps/web/src/modules/planner/components/shared/DashboardMetrics.vue | component | Grille métriques (distance, budget, fuel) |
| apps/web/src/modules/planner/components/shared/index.ts | barrel | Exporte composants partagés dashboard |
| apps/web/src/modules/planner/components/shared/PlannerDialogs.vue | component | Modales communes planner (confirmations, wizards) |
| apps/web/src/modules/planner/components/shared/PlannerHeroHeader.vue | component | Header hero planner desktop |
| apps/web/src/modules/planner/components/shared/PlannerMobileHero.vue | component | Hero planner mobile |
| apps/web/src/modules/planner/components/shared/PlannerQuickActions.vue | component | Actions rapides (ajout étape, sync) |
| apps/web/src/modules/planner/components/StageCard.vue | component | Carte étape (nom, tags, actions) |
| apps/web/src/modules/planner/components/StageForm.vue | component | Formulaire création/édition étape |
| apps/web/src/modules/planner/components/StageIconPicker.vue | component | Sélecteur icône étape |
| apps/web/src/modules/planner/components/StageList.vue | component | Liste d'étapes (desktop) |
| apps/web/src/modules/planner/components/StageMetaDesigner.vue | component | Designer métadonnées étape (notes, tags) |
| apps/web/src/modules/planner/components/StagesList.vue | component | Variante liste d'étapes |
| apps/web/src/modules/planner/components/StageSmartEditor.vue | component | Éditeur étape assisté (IA + validations) |
| apps/web/src/modules/planner/components/StagesTimeline.vue | component | Timeline/ordre des étapes |
| apps/web/src/modules/planner/components/StatusBar.vue | component | Barre statut (sync/offline/route) |
| apps/web/src/modules/planner/components/SwipeStageItem.vue | component | Item étape swipable (mobile) |
| apps/web/src/modules/planner/composables/useDashboardController.ts | composable | Orchestre données dashboard (plans, stats, météo) |
| apps/web/src/modules/planner/composables/useHistoryIntegration.ts | composable | Intègre historique navigateur avec stack planner |
| apps/web/src/modules/planner/composables/useHistoryStack.ts | composable | Stack undo/redo planner |
| apps/web/src/modules/planner/composables/useMobilePoiDiscovery.ts | composable | Flux découverte POI mobile (search + sheets) |
| apps/web/src/modules/planner/composables/usePlannerActions.ts | composable | Actions plan/stage (create/update/delete/sync) |
| apps/web/src/modules/planner/composables/usePlannerLayout.ts | composable | Sélection layout/plans selon device et prefs |
| apps/web/src/modules/planner/composables/usePlannerStatuses.ts | composable | Statuts plan (progress, warnings, offline) |
| apps/web/src/modules/planner/composables/usePlannerWizardState.ts | composable | État du wizard (étape active, validation) |
| apps/web/src/modules/planner/composables/useQuickStagePlacement.ts | composable | Placement rapide d'étape via map/coords |
| apps/web/src/modules/planner/composables/useStageAutoCompletion.ts | composable | Auto-complétion champs étape (POI, adresse) |
| apps/web/src/modules/planner/config/presets.ts | config | Presets planner (modes explore/plan/copilot) |
| apps/web/src/modules/planner/constants/stageIcons.ts | constants | Mapping icônes étapes (catégories) |
| apps/web/src/modules/planner/pages/DashboardPage.mobile.vue | page | Dashboard mobile (métriques + AI assistant) |
| apps/web/src/modules/planner/pages/DashboardPage.web.vue | page | Dashboard desktop |
| apps/web/src/modules/planner/pages/LandingPage.vue | page | Page d'atterrissage marketing/public |
| apps/web/src/modules/planner/pages/PlannerPage.mobile.vue | page | Éditeur plan mobile (timeline + map) |
| apps/web/src/modules/planner/pages/PlannerPage.web.vue | page | Éditeur plan desktop |
| apps/web/src/modules/planner/services/mapboxService.ts | service | Helpers Mapbox pour planner (tokens, styles) |
| apps/web/src/modules/planner/services/plannerBatchService.ts | service | Batch actions plan/stage (offline + queue) |
| apps/web/src/modules/planner/services/plannerService.ts | service | Client API planner (plans/stages/optimize/share) |
| apps/web/src/modules/planner/services/plannerSession.ts | service | Gestion session planner (plan courant, cache) |
| apps/web/src/modules/planner/services/weatherService.ts | service | Client météo pour planner/dashboard |
| apps/web/src/modules/planner/stores/__tests__/plannerStore.test.ts | test | Tests Pinia store planner |
| apps/web/src/modules/planner/stores/plannerStore.ts | store | Store planner (plans, stages, sync, prefs) |
| apps/web/src/modules/planner/styles/planner-common.css | style | Styles communs planner |
| apps/web/src/modules/planner/styles/planner-config.css | style | Styles panneaux config |
| apps/web/src/modules/planner/styles/planner-layout.css | style | Styles layouts planner |
| apps/web/src/modules/planner/styles/planner-map.css | style | Styles map planner |
| apps/web/src/modules/planner/styles/planner-timeline.css | style | Styles timeline |
| apps/web/src/modules/planner/styles/planner-variables.css | style | Variables CSS planner |
| apps/web/src/modules/planner/styles/planner-wizard.css | style | Styles wizard planner |
| apps/web/src/modules/planner/types/mapbox-api.types.ts | types | Types Mapbox utilisés par planner |
| apps/web/src/modules/planner/utils/__tests__/collaborators.test.ts | test | Tests utils collaborateurs |
| apps/web/src/modules/planner/utils/__tests__/dashboardMetrics.test.ts | test | Tests calcul métriques dashboard |
| apps/web/src/modules/planner/utils/__tests__/planMetrics.test.ts | test | Tests plan metrics |
| apps/web/src/modules/planner/utils/__tests__/signalBadge.test.ts | test | Tests badges de signal |
| apps/web/src/modules/planner/utils/address.ts | util | Helpers adresses (formatage, fallback) |
| apps/web/src/modules/planner/utils/collaborators.ts | util | Helpers collaborateurs/permissions |
| apps/web/src/modules/planner/utils/dashboardMetrics.spec.ts | test | Spec métriques dashboard |
| apps/web/src/modules/planner/utils/dashboardMetrics.ts | util | Calcul métriques dashboard |
| apps/web/src/modules/planner/utils/distance.ts | util | Calcul distances (haversine etc.) |
| apps/web/src/modules/planner/utils/location.ts | util | Helpers géoloc/coords |
| apps/web/src/modules/planner/utils/planMetrics.ts | util | Calcul métriques plan (distance, durée) |
| apps/web/src/modules/planner/utils/planNaming.ts | util | Génération noms de plan |
| apps/web/src/modules/planner/utils/segmentPreview.ts | util | Prévisualisation segments (instruction + stats) |
| apps/web/src/modules/planner/utils/segments.ts | util | Utils segments (tri, fusion) |
| apps/web/src/modules/planner/utils/signalBadge.ts | util | Mapping signaux → badges/états |
| apps/web/src/modules/planner/utils/stageMetadata.ts | util | Génère métadonnées étape (types, stats) |
| apps/web/src/modules/planner/utils/stageSuggestions.ts | util | Suggestions d'étapes (AI + heuristiques) |

### profile

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/profile/components/IconSelector.vue | component | Sélecteur d'avatar/icônes |
| apps/web/src/modules/profile/components/QuotaDetailCard.vue | component | Carte détail quotas (AI, stockage, offline) |
| apps/web/src/modules/profile/composables/useQuotaInfo.ts | composable | Prépare quotas (formatage + messages) |
| apps/web/src/modules/profile/pages/ProfilePage.mobile.vue | page | Page profil mobile (infos, avatar, quotas) |
| apps/web/src/modules/profile/pages/ProfilePage.web.vue | page | Page profil desktop |
| apps/web/src/modules/profile/services/avatarService.ts | service | Upload/choix avatar (assets + storage) |
| apps/web/src/modules/profile/services/profileService.ts | service | Client API profil (/api/auth/profile, prefs) |
| apps/web/src/modules/profile/stores/profileStore.ts | store | Store profil (prefs display, quotas, roles) |

### root

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/assets/styles/performance.css | style | Styles perf (animations/réductions) |
| apps/web/src/config/firebase.ts | config | Config Firebase client (keys, init guards) |
| apps/web/src/config/mapPresets.config.ts | config | Presets carte (layouts, options) |
| apps/web/src/env.d.ts | types | Déclarations env Vite |
| apps/web/src/i18n/index.ts | i18n | Instancie vue-i18n, charge locales |
| apps/web/src/locales/en.json | i18n | Locale anglais |
| apps/web/src/locales/fr.json | i18n | Locale français |
| apps/web/src/pages/NotFound.vue | page | Page 404 générique |
| apps/web/src/plugins/vueBestPractices.ts | plugin | Plugin lint/runtime best practices (warnings) |
| apps/web/src/styles/buttons.css | style | Styles boutons globaux |
| apps/web/src/styles/dashboard.css | style | Styles dashboard |
| apps/web/src/styles/design-tokens.css | style | Tokens (couleurs, espacement) |
| apps/web/src/styles/quasar-accent-override.css | style | Override accents Quasar |
| apps/web/src/styles/quasar-overrides.css | style | Overrides composants Quasar |
| apps/web/src/styles/responsive.css | style | Règles responsive globales |
| apps/web/src/styles/shared-components.css | style | Styles communs UI partagés |
| apps/web/src/test/setup.ts | setup | Setup Vitest frontend |
| apps/web/src/types/external-modules.d.ts | types | Stubs modules externes |
| apps/web/src/types/geojson.d.ts | types | Types GeoJSON |
| apps/web/src/types/mobile-components.d.ts | types | Déclare composants mobiles globalement |
| apps/web/src/types/navigator.d.ts | types | Types navigator/geolocation |
| apps/web/src/types/vue.d.ts | types | Déclare auto-imports Vue |
| apps/web/src/types/vue3-apexcharts.d.ts | types | Types ApexCharts pour Vue |
| apps/web/src/utils/date-i18n.ts | util | Formats dates avec locale |
| apps/web/src/utils/errorHandling.ts | util | Helpers catch/report erreurs UI |
| apps/web/src/utils/haptics.ts | util | Haptics wrapper (Vibration + iOS) |
| apps/web/src/workers/indexeddb.worker.ts | worker | Worker pour opérations IndexedDB (CRDT/offline) |
| apps/web/src/workers/indexedDBWorkerClient.ts | worker | Client worker (postMessage helpers) |

### routeOptimization

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/routeOptimization/__tests__/routeOptimization.e2e.spec.ts | test | E2E optimiseur d'itinéraire (UI + API) |
| apps/web/src/modules/routeOptimization/components/RouteOptimizerDialog.vue | component | Dialogue optimisation (paramètres TSP, contraintes) |
| apps/web/src/modules/routeOptimization/composables/useRouteOptimization.ts | composable | Gère appels optimisation + état UI |
| apps/web/src/modules/routeOptimization/services/routeOptimizationService.ts | service | Client API routeOptimization (/api/route-optimization) |

### search

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/search/pages/SearchPage.mobile.vue | page | Page recherche mobile (filtres, résultats) |
| apps/web/src/modules/search/pages/SearchPage.vue | page | Page recherche desktop |
| apps/web/src/modules/search/services/searchService.ts | service | Client API /api/search, favoris, feed |
| apps/web/src/modules/search/stores/searchStore.ts | store | Store recherche (query, filtres, résultats) |

### services

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/services/api.ts | service | Axios client + interceptors auth/offline + base URL |
| apps/web/src/services/eventBus.ts | service | Event bus typé (plan, ai, rewards, offline) |
| apps/web/src/services/firebase.ts | service | Init Firebase client (optionnel) |
| apps/web/src/services/navigationBridge.ts | service | Pont natif (capacitor/pwa) pour navigation externe |
| apps/web/src/services/offline/cacheService.ts | service | Helpers cache offline (localStorage/indexedDB) |
| apps/web/src/services/offline/errors.ts | service | Classes/Helpers erreurs offline |
| apps/web/src/services/orchestrator.ts | service | Orchestration events → rewards/notifications |
| apps/web/src/services/rewardConfig.ts | service | Config rewards (points par action) |
| apps/web/src/services/rewardService.ts | service | Traitement récompenses côté client |

### settings

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/settings/components/BillingSection.vue | component | Section abonnements/portail billing |
| apps/web/src/modules/settings/components/GamificationSection.vue | component | Section gamification (badges, fuel, resets) |
| apps/web/src/modules/settings/components/PreferencesSection.vue | component | Section préférences affichage (mobile nav type, thèmes) |
| apps/web/src/modules/settings/components/ProfileSection.vue | component | Section profil (infos, avatar) |
| apps/web/src/modules/settings/components/SecuritySection.vue | component | Section sécurité (session, logout) |
| apps/web/src/modules/settings/composables/useSettingsActions.ts | composable | Actions sauvegarde/chargement settings |
| apps/web/src/modules/settings/composables/useSettingsViewModel.ts | composable | Prépare view-model (tabs, form state) |
| apps/web/src/modules/settings/pages/SettingsPage.mobile.vue | page | Page settings mobile (tabs profil/billing/gamification) |
| apps/web/src/modules/settings/pages/SettingsPage.vue | page | Page settings desktop |
| apps/web/src/modules/settings/stores/localSettingsStore.ts | store | Store local settings (devMode, toggles UI) |

### shared

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/shared/components/__tests__/RetryButton.test.ts | test | Tests/specs |
| apps/web/src/shared/components/__tests__/SyncStatusBadge.test.ts | test | Tests/specs |
| apps/web/src/shared/components/BaseButton.vue | component | Bouton stylé réutilisable |
| apps/web/src/shared/components/BaseCard.vue | component | Carte container glass |
| apps/web/src/shared/components/BaseChart.vue | component | Wrapper ApexCharts |
| apps/web/src/shared/components/BaseIcon.vue | component | Wrapper d'icônes unifié |
| apps/web/src/shared/components/CollaborativeCursors.vue | component | Curseurs collaboratifs Yjs |
| apps/web/src/shared/components/ErrorBoundary.vue | component | Boundary UI partagé |
| apps/web/src/shared/components/LanguageSwitcher.vue | component | Sélecteur langue |
| apps/web/src/shared/components/MobileCTA.vue | component | CTA flottant mobile |
| apps/web/src/shared/components/MobileStatusHud.vue | component | HUD mobile (réseau/offline/sync) |
| apps/web/src/shared/components/OfflineIndicator.vue | component | Indicateur offline simple |
| apps/web/src/shared/components/OfflineQueueDialog.vue | component | Dialogue file offline (pending/failed) |
| apps/web/src/shared/components/OfflineStatusBanner.vue | component | Bannière statut offline/sync |
| apps/web/src/shared/components/OperationStatus.vue | component | Statut opération (succès/erreur) |
| apps/web/src/shared/components/OptimizedImage.vue | component | Image lazy + optimisation |
| apps/web/src/shared/components/PageShell.vue | component | Shell de page générique (header + content) |
| apps/web/src/shared/components/QuickActionsFAB.vue | component | FAB actions rapides |
| apps/web/src/shared/components/RetryButton.vue | component | Bouton retry avec états |
| apps/web/src/shared/components/SyncStatusBadge.vue | component | Badge statut sync/offline |
| apps/web/src/shared/components/ui/Spinner.vue | component | Spinner générique |
| apps/web/src/shared/components/UserAvatar.vue | component | Avatar utilisateur (photo/initiale) |
| apps/web/src/shared/composables/useFormValidation.ts | composable | Helpers validation formulaires |
| apps/web/src/shared/composables/useLocaleNumber.ts | composable | Formatage numérique localisé |
| apps/web/src/shared/composables/useMobileStatusSignals.ts | composable | Signaux mobile (réseau, battery) pour UI |
| apps/web/src/shared/composables/useSmartNotifications.ts | composable | Notifications intelligentes (dedupe + toasts) |
| apps/web/src/shared/composables/useVirtualScroll.ts | composable | Virtual scroll utilitaire |
| apps/web/src/shared/constants/profileIconColors.ts | constants | Palette couleurs avatars |
| apps/web/src/shared/services/weatherService.ts | service | Client météo partagé (widgets) |
| apps/web/src/shared/types/status.ts | types | Statuts réseau/sync typés |
| apps/web/src/shared/utils/__tests__/haptics.test.ts | test | Tests util haptics |
| apps/web/src/shared/utils/apiCache.ts | util | Cache API (memo + TTL) |
| apps/web/src/shared/utils/databaseOptimization.ts | util | Helpers optimisation Dexie/IDB |
| apps/web/src/shared/utils/format.ts | util | Helpers format texte/nombres/dates |
| apps/web/src/shared/utils/haptics.ts | util | Helpers vibration/haptics |
| apps/web/src/shared/utils/imageOptimization.ts | util | Helpers optimisation images |
| apps/web/src/shared/utils/lazyComponents.ts | util | Loader composants lazy |
| apps/web/src/shared/utils/logger.ts | util | Logger frontend (prefix, levels) |
| apps/web/src/shared/utils/memoryMonitor.ts | util | Moniteur mémoire (perf UI) |
| apps/web/src/shared/utils/performanceOptimizer.ts | util | Optimisations perf (throttle, debounce) |
| apps/web/src/shared/utils/profileIcons.ts | util | Mapping icônes profil |
| apps/web/src/shared/utils/reactiveOptimizer.ts | util | Optimisations reactive (computed/memo) |
| apps/web/src/shared/utils/safeJson.ts | util | JSON safe parse/stringify |
| apps/web/src/shared/utils/serviceWorkerSync.ts | util | Sync via service worker (background) |
| apps/web/src/shared/utils/storage.ts | util | Helpers storage sûr (SSR/localStorage) |
| apps/web/src/shared/utils/vueLifecycle.ts | util | Helpers lifecycle Vue (onMounted etc) |

### social

| Path | Layer | Purpose |
|---|---|---|
| apps/web/src/modules/social/components/SocialFeed.vue | component | Flux social (amis/clans) avec polling |
| apps/web/src/modules/social/services/clanService.ts | service | Client API clans (partagé avec module clan) |
| apps/web/src/modules/social/services/liveSocialService.ts | service | Client API social/live sessions feed |
| apps/web/src/modules/social/stores/liveSocialStore.ts | store | Store live social (feed, refresh interval) |

## Packages

### types

| Path | Layer | Purpose |
|---|---|---|
| packages/types/package.json | meta | Package metadata |
| packages/types/src/admin.types.ts | types | Admin stats, moderation, cache types |
| packages/types/src/ai-models.types.ts | types | Modèles AI disponibles + métadonnées |
| packages/types/src/ai.types.ts | types | DTO AI (suggestions, jobs, usage) |
| packages/types/src/analytics.types.ts | types | Analytics/funnels/heatmap types |
| packages/types/src/billing.types.ts | types | Billing/Stripe plans, usage, referrals |
| packages/types/src/clan.types.ts | types | Types clans (members, invites, posts) |
| packages/types/src/collab.types.ts | types | Types collaboration/CRDT/presence |
| packages/types/src/cost.types.ts | types | Types suivi coûts API |
| packages/types/src/gamification.types.ts | types | Points, badges, quests, season, fuel |
| packages/types/src/incident.types.ts | types | Types incidents/alertes admin |
| packages/types/src/index.ts | barrel | Exports agrégés |
| packages/types/src/live.types.ts | types | Sessions live, participants, telemetry |
| packages/types/src/location.types.ts | types | Localisation, coordonnées, bounding boxes |
| packages/types/src/map.types.ts | types | Map context, layers, segments |
| packages/types/src/mapPresets.types.ts | types | Presets map (layouts, scenarios) |
| packages/types/src/notification.types.ts | types | Notifications payloads |
| packages/types/src/planner-presets.types.ts | types | Presets planner (modes) |
| packages/types/src/planner.types.ts | types | Plans, stages, segments, settings |
| packages/types/src/profile.types.ts | types | Profils utilisateur, préférences, quotas |
| packages/types/src/reward.types.ts | types | Rewards/gamification mapping |
| packages/types/src/routeOptimization.types.ts | types | TSP optimisation payloads/résultats |
| packages/types/src/search.types.ts | types | Recherche (filters, results, feeds) |
| packages/types/src/sharing.types.ts | types | Partage plans/comments tokens |
| packages/types/src/user.types.ts | types | Utilisateur (roles, mobileNavType, plan) |

### utils

| Path | Layer | Purpose |
|---|---|---|
| packages/utils/package.json | meta | Package metadata |
| packages/utils/src/__tests__/geo.test.ts | test | Tests utilitaires géo |
| packages/utils/src/date.ts | util | Helpers dates (formats, ranges) |
| packages/utils/src/geo.ts | util | Helpers géo (haversine, bounding boxes) |
| packages/utils/src/index.ts | barrel | Exporte utilitaires |
| packages/utils/src/location.ts | util | Helpers localisation (bearing, speed) |
| packages/utils/src/poi-names.ts | util | Nettoyage/normalisation noms POI |
| packages/utils/src/string.ts | util | Helpers string (slug, truncate) |
| packages/utils/tsconfig.build.json | config | Build config utils |
| packages/utils/tsconfig.json | config | TS config utils |

### validators

| Path | Layer | Purpose |
|---|---|---|
| packages/validators/package.json | meta | Package metadata |
| packages/validators/src/ai.schemas.ts | schemas | Zod AI (suggest-pois, enhance-plan, jobs, usage) |
| packages/validators/src/billing.schemas.ts | schemas | Zod billing (checkout, portal, usage, referrals) |
| packages/validators/src/collab.schemas.ts | schemas | Zod collaboration (sync/presence payloads) |
| packages/validators/src/common.schemas.ts | schemas | Schémas communs (ids, pagination) |
| packages/validators/src/gamification.schemas.ts | schemas | Zod gamification (quests, badges, fuel, seasons) |
| packages/validators/src/index.ts | barrel | Exporte schémas |
| packages/validators/src/planner.schemas.ts | schemas | Zod plans/stages/optimize/share |
| packages/validators/src/profile.schemas.ts | schemas | Zod profils/préférences display |
| packages/validators/src/sharing.schemas.ts | schemas | Zod partage (tokens, accès public) |
| packages/validators/tsconfig.json | config | TS config validators |

## Scripts, Tools & Tests

### scripts

| Path | Layer | Purpose |
|---|---|---|
| scripts/.DS_Store | artifact | macOS artifact |
| scripts/aggregate-multi-source.mjs | script | Agrège POI multi-sources (OSM/Mapbox/DB) |
| scripts/audit-backend.sh | script | Audit backend (lint/tests) |
| scripts/audit-memory.mjs | script | Profil mémoire node/API |
| scripts/check-anti-patterns.ts | script | Détection anti-patterns TS/Vue |
| scripts/check-redis-config.sh | script | Vérifie config Redis/Upstash |
| scripts/check-redis-status.sh | script | Vérifie disponibilité Redis |
| scripts/ci/sync_github_secrets.sh | script | Sync secrets GitHub Actions |
| scripts/clean-zshrc.sh | script | Nettoie .zshrc local |
| scripts/cleanup-redis.sh | script | Flush/cleanup caches Redis |
| scripts/codexp | script | Outil dev interne (alias Codex) |
| scripts/deduplicate-pois.mjs | script | Déduplication base POI |
| scripts/dep-audit.sh | script | Audit dépendances (npm audit) |
| scripts/deploy-firestore-indexes.sh | script | Déploie indexes Firestore |
| scripts/deploy-production.sh | script | Déploiement prod (pipeline) |
| scripts/diagnose-api.sh | script | Diagnostic API (health, logs) |
| scripts/enrich-pois-with-ai.mjs | script | Enrichissement POI via AI |
| scripts/fix-planner-priority1.sh | script | Corrections critiques planner |
| scripts/fix-remaining-errors.sh | script | Nettoyage erreurs résiduelles build/type |
| scripts/fix-shell-for-agents.sh | script | Prépare shell pour agents Codex |
| scripts/fix-type-definitions.sh | script | Correction définitions de types |
| scripts/fix-type-violations-phase2.sh | script | Correction violations types (phase 2) |
| scripts/fix-type-violations.sh | script | Correction violations types (phase 1) |
| scripts/generate-code-index.sh | script | Génère index du code (grep index) |
| scripts/grep-helpers.sh | script | Alias grep/rg utilitaires |
| scripts/logger.mjs | script | Logger utilitaire (debug seeds) |
| scripts/migrate-add-geohash.mjs | script | Migration ajout geohash aux POI/plans |
| scripts/monitor-seeding.sh | script | Suit progression des seeds |
| scripts/moved/analyze-typescript-errors.sh | script | Analyse erreurs TS (legacy) |
| scripts/moved/apply-performance-optimizations.sh | script | Optimisations perf (legacy) |
| scripts/moved/apply-stability-fixes.sh | script | Correctifs stabilité (legacy) |
| scripts/moved/apps/web/vitest.config.ts.timestamp-1763688136046-98c4a5fb1e14f8.mjs | test | Snapshot config vitest (legacy) |
| scripts/moved/DEPLOY_AND_SEED_COMMANDS.sh | script | Commandes déploiement+seed (legacy) |
| scripts/moved/deploy.sh | script | Déploiement legacy |
| scripts/moved/fix-env-access.sh | script | Fix accès env (legacy) |
| scripts/moved/fix-qpage.sh | script | Fix QPage Quasar (legacy) |
| scripts/moved/install.sh | script | Installation deps (legacy) |
| scripts/moved/run-e2e-auto.sh | script | Run E2E auto (legacy) |
| scripts/moved/show-summary.sh | script | Résumé modifications (legacy) |
| scripts/moved/start-integration.sh | script | Démarrage intégration (legacy) |
| scripts/moved/test-auth-bypass.mjs | test | Test bypass auth (legacy) |
| scripts/moved/test-dashboard.sh | test | Test dashboard (legacy) |
| scripts/moved/test-e2e-quick.sh | test | E2E rapide (legacy) |
| scripts/moved/test-integration.sh | test | Tests intégration (legacy) |
| scripts/moved/test-poi-database.sh | test | Tests base POI (legacy) |
| scripts/moved/test-poi-optimizations.sh | test | Tests optimisation POI (legacy) |
| scripts/moved/TOKEN_FIX_VERIFICATION.sh | script | Vérif correctifs tokens (legacy) |
| scripts/moved/validate-e2e-config.sh | script | Valide config E2E (legacy) |
| scripts/moved/verify-structure.sh | script | Vérifie structure repo (legacy) |
| scripts/preflight-check.mjs | script | Préflight (env, deps) |
| scripts/replace-border-radius.sh | script | Remplace border-radius (thème) |
| scripts/report-v-directives.js | script | Rapport directives v-if/v-show |
| scripts/rt-agent.sh | script | Alias runtime agent |
| scripts/rt-aliases.sh | script | Définit alias shell rt-* |
| scripts/rt-cache.sh | script | Gère cache local |
| scripts/rt-cli.sh | script | CLI MyRoadTrip |
| scripts/rt-deep.sh | script | Scan profond repo |
| scripts/rt-fast.sh | script | Scan rapide repo |
| scripts/scan-transition-errors.mjs | script | Scan erreurs transitions Vue |
| scripts/scan-vif-patterns.mjs | script | Scan patterns v-if problématiques |
| scripts/seed-france-complete.mjs | script | Seed POI France complet |
| scripts/seed-natural-spots-failed.json | log | Log seeds échoués |
| scripts/seed-natural-spots-progress.json | log | Progression seed spots naturels |
| scripts/seed-natural-spots-retry.mjs | script | Relance seeds spots naturels |
| scripts/seed-natural-spots-simple.log | log | Log seed simple |
| scripts/seed-natural-spots.log | log | Log seed complet |
| scripts/seed-natural-spots.mjs | script | Seed spots naturels (principal) |
| scripts/seed-natural-spots.mjs.backup-complex | script | Backup script seed (version complexe) |
| scripts/seed-natural-spots.mjs.OLD-BROKEN | script | Ancienne version seed (cassée) |
| scripts/setup-github-secrets.sh | setup | Configure secrets GitHub Actions |
| scripts/setup-gta5-mac.sh | setup | Script perso (expérimental, non prod) |
| scripts/setup-optimizations.sh | setup | Applique optimisations perf locales |
| scripts/suppress-errors-fast.sh | script | Masque temporairement erreurs (debug) |
| scripts/test-multilingual-pois.mjs | test | Test POI multilingues |
| scripts/test-stripe-config.mjs | test | Vérifie configuration Stripe env |
| scripts/validate-persistence.sh | script | Valide persistance Firestore/Redis |
| scripts/validate-quality.sh | script | Lint/qualité rapide |
| scripts/validate-types.sh | script | Type-check monorepo |
| scripts/vps/.env.production.example | config | Exemple env pour VPS |
| scripts/vps/bootstrap_vps.sh | script | Bootstrap serveur VPS |
| scripts/vps/Caddyfile | config | Config Caddy reverse-proxy VPS |
| scripts/vps/deploy_all.sh | script | Déploie API + maps sur VPS |
| scripts/vps/deploy_from_local.sh | script | Déploiement VPS depuis poste local |
| scripts/vps/deploy_myroadtrip.sh | script | Déploiement MyRoadTrip (service) |
| scripts/vps/deploy_on_vps.sh | script | Déploiement exécuté sur VPS |
| scripts/vps/deploy.sh | script | Wrapper déploiement VPS |
| scripts/vps/docker-compose.api.yml | config | Stack docker-compose API |
| scripts/vps/docker-compose.maps.yml | config | Stack docker-compose OSRM/maps |
| scripts/vps/maps-stack.service | service | Service systemd stack maps |
| scripts/vps/myroadtrip-api-docker.service | service | Service systemd API (docker) |
| scripts/vps/myroadtrip-api.service | service | Service systemd API bare |
| scripts/vps/restore-backup.sh | script | Restaure backup VPS |
| scripts/vps/setup_osrm_stack.sh | setup | Installe stack OSRM sur VPS |
| scripts/vps/sync_envs.sh | script | Sync environnements VPS/local |

### tests

| Path | Layer | Purpose |
|---|---|---|
| tests/e2e/admin.spec.ts | test | Parcours admin (stats, users, moderation) |
| tests/e2e/axe-theme.spec.ts | test | Accessibilité + thème sombre |
| tests/e2e/dashboard-crud.spec.ts | test | CRUD plan/stage depuis dashboard |
| tests/e2e/debug-auth.spec.ts | test | Flux Auth0 (login/logout/callback) |
| tests/e2e/debug-burger-menu.spec.ts | test | Navigation burger/standard mobile |
| tests/e2e/debug-offline-banner.spec.ts | test | Bannières offline/sync |
| tests/e2e/debug-shell-navigation.spec.ts | test | Navigation AppShell + routes protégées |
| tests/e2e/design-snapshots.spec.ts | test | Snapshots UI design (Playwright) |
| tests/e2e/map-modes.spec.ts | test | Modes carte (explore/navigate/signal) |
| tests/e2e/map-planner-sync.spec.ts | test | Synchronisation carte/planner (stages/segments) |
| tests/e2e/offline-queue.spec.ts | test | Queue offline (retry/backoff) |
| tests/e2e/planner-page.spec.ts | test | Flows éditeur plan (timeline + map) |
| tests/e2e/profile-page.spec.ts | test | Page profil (prefs, quotas) |
| tests/e2e/support/testHarness.ts | test | Helpers E2E (auth bypass, seeding stores) |

### tools

| Path | Layer | Purpose |
|---|---|---|
| tools/codemods/replace-console-with-logger.ts | codemod | Remplace console.* par logger backend |
| tools/fix-logger-import-order.cjs | script | Corrige ordre imports logger |
| tools/fix-mapbox-service.cjs | script | Patch Mapbox service (token/typing) |
| tools/list-explicit-any.js | script | Liste les `any` explicites dans code |
| tools/replace-console-frontend.cjs | script | Remplace console.* côté frontend par logger |
