Aller au contenu principal

Vue d'ensemble du projet DMV

Statut

Ce document est une première synthèse factuelle du projet DMV à partir du workspace local analysé le 2026-05-08.

Il ne remplace pas une vision produit validée. Il distingue les éléments visibles dans le code des éléments à confirmer.

Résumé factuel

Le projet DMV est organisé comme un écosystème applicatif autour d'une API Laravel, d'un backoffice React/Vite, d'un site public Next.js et d'une couche Supabase visible dans les frontends et les migrations.

Le site public utilise le libellé Dans Mon Village dans ses métadonnées et expose un annuaire par commune. Le code montre également des domaines fonctionnels autour des acteurs locaux, communes, publications, contributeurs, groupes, abonnements, messages, documents, statistiques, PlayLoop, AssoSuite et Mairie.

Applications visibles

API Laravel

Dossier : api

Éléments visibles :

  • Stack : PHP ^8.3, Laravel ^13.0, Laravel Sanctum, Stripe PHP, Firebase JWT.
  • Routes API principales sous /api/v1.
  • Health-check public sous /api/v1/health.
  • Middleware applicatif identify.app, basé sur le header X-App-Source.
  • Sources applicatives acceptées par le middleware : dmv, backoffice, playloop, assosuite, mairie.
  • Réponses d'erreur configurées en JSON dans api/bootstrap/app.php.
  • Jobs planifiés visibles : expiration des boosts et expiration des alertes mairie.
  • Tests API visibles dans api/tests/Feature et api/tests/Unit.

Modules Laravel actifs visibles dans api/bootstrap/providers.php :

  • Identity : authentification, profils et rôles.
  • Territory : communes, élus, collectes et informations communales.
  • Actor : acteurs, tags, documents, XP et claims.
  • Publication : publications, types, rattachement aux communes, modération et reports.
  • Community : contributeurs, groupes et favoris.
  • Monetization : plans, abonnements, boosts et Stripe.
  • Settings : feature tabs et paramètres applicatifs.
  • Analytics : statistiques et agrégats.
  • PlayLoop : devices, playlists, médias et campagnes.
  • AssoSuite : membres, invitations, cotisations, publications et projets.
  • Chat : salons, messages et reçus de lecture.
  • Mairie : alertes, services et publications mairie.
  • Admin : endpoints d'administration pour utilisateurs, acteurs, claims, abonnements et communes.

Backoffice DMV

Dossier : dmv_backoffice

Éléments visibles :

  • Stack : React 19.2, Vite 7.2, Supabase JS, React Router, Leaflet, PapaParse et Recharts.
  • Client Supabase initialisé via VITE_SUPABASE_URL et VITE_SUPABASE_ANON_KEY.
  • Authentification gérée via Supabase Auth.
  • Accès réservé aux administrateurs selon le rôle admin dans users_roles.
  • Pages visibles : dashboard, publications, médias de publication, acteurs, import acteurs, communes, catégories, utilisateurs, profil, statistiques, contributeurs, groupes, messages, claims, plans, souscriptions, astuces, feature tabs et médias par défaut.
  • Composants d'import visibles pour associations et données Sirene.
  • Dossier Supabase associé avec migrations SQL et Edge Functions.

Site public DMV

Dossier : dmv-public

Éléments visibles :

  • Stack : Next.js 16.1, React 19.2, TypeScript, Tailwind CSS, Supabase JS, SWR, Leaflet et React Leaflet.
  • Client Supabase initialisé via NEXT_PUBLIC_SUPABASE_URL et NEXT_PUBLIC_SUPABASE_ANON_KEY.
  • Page d'accueil centrée sur le mur de la ville.
  • Route dynamique par commune : app/[commune]/page.tsx.
  • Annuaire par commune avec acteurs validés, tags, catégorie, localisation, horaires, badge et état de revendication.
  • Espace utilisateur sous app/mon-espace.
  • Pages publiques visibles : a-propos, contact, CGU, confidentialité, mentions légales.
  • Fichiers SEO visibles : robots.ts et sitemap.ts.
  • Edge Functions Supabase visibles pour contact, email entrant/sortant et messages acteur.

Modules et domaines fonctionnels visibles

Les domaines suivants sont confirmés par les dossiers, routes, modèles, migrations ou pages :

  • Identité : profils, rôles, session, échange de token, utilisateur courant et déconnexion.
  • Territoire : communes, élus, collectes et informations pratiques.
  • Acteurs : acteurs locaux, tags, documents, claims, badges et événements XP.
  • Publications : types, publications, communes rattachées, modération et signalements.
  • Communauté : contributeurs, favoris, groupes et membres de groupes.
  • Monétisation : plans, abonnements, boosts, usage push et webhooks Stripe.
  • Administration : gestion des utilisateurs, acteurs, claims, communes et abonnements.
  • Paramétrage : feature tabs, overrides et paramètres applicatifs.
  • Analytics : statistiques globales, par acteur et par commune.
  • PlayLoop : devices, playlists, items, médias, campagnes et authentification device.
  • AssoSuite : membres, invitations, cotisations, publications et projets.
  • Chat : rooms, messages et read receipts.
  • Mairie : alertes, services et publications associées aux mairies.

Données visibles

Deux sources de migrations sont visibles :

  • api/database/migrations : migrations Laravel couvrant profils, rôles, communes, acteurs, documents, publications, contributeurs, groupes, monétisation, settings, PlayLoop, AssoSuite, chat et mairie.
  • dmv_backoffice/supabase/migrations et dmv-public/supabase/migrations : migrations SQL Supabase couvrant notamment documents, storage, tags, groupes, publications personnelles, modération, Stripe, feature tabs, favoris, communes, XP, astuces et stats events.

Point à confirmer : la source canonique des schémas et le partage exact entre migrations Laravel et migrations Supabase ne sont pas encore formalisés dans ces deux fichiers.

Infrastructure et déploiement visibles

Dossier : deployment

Éléments visibles :

  • Exemple d'environnement production : .env.production.example.
  • Scripts : deploy.sh et install.sh.
  • Configuration serveur : nginx.conf.
  • Supervision : supervisor.conf.
  • Cron : crontab.txt.

Point à confirmer : l'infrastructure réelle, les environnements, les domaines officiels et la chaîne CI/CD ne sont pas établis uniquement à partir de ces fichiers.

Documentation visible

Le dossier docs contient déjà une structure complète pour un Master Book :

  • gouvernance, vision, écosystème, business, produit, IA, architecture, backend, frontend, data, sécurité, devops, apps, roadmap, marketing, finance, opérations, legal et annexes ;
  • espaces dédiés aux décisions, prompts, règles, schémas et assets.

La plupart des fichiers observés sont vides à ce stade. Le contenu officiel reste donc à produire progressivement.

Ce qui est à confirmer

  • Nom officiel et positionnement exact de DMV : Dans Mon Village est visible dans le site public, mais le cadrage officiel complet reste à valider.
  • Publics cibles exacts : communes, acteurs locaux, contributeurs, associations et administrateurs sont visibles dans le code, mais la segmentation officielle reste à formaliser.
  • Statut produit : aucune conclusion fiable n'est tirée ici sur production, beta, MVP ou roadmap.
  • Responsabilités Laravel/Supabase : le code montre une API Laravel et des accès directs Supabase côté frontends ; l'architecture cible reste à confirmer.
  • Périmètre des apps PlayLoop, AssoSuite et Mairie : les modules backend existent, mais les interfaces dédiées et leur niveau de maturité restent à documenter.
  • Règles de sécurité, RGPD, modération, support, finance, marketing et IA : les chapitres existent dans docs, mais leur contenu officiel reste à construire.

Sources locales inspectées

  • api/composer.json
  • api/package.json
  • api/bootstrap/app.php
  • api/bootstrap/providers.php
  • api/routes/api.php
  • api/app/Modules
  • api/database/migrations
  • api/tests
  • dmv_backoffice/package.json
  • dmv_backoffice/src/App.jsx
  • dmv_backoffice/src/pages
  • dmv_backoffice/src/components
  • dmv_backoffice/supabase
  • dmv-public/package.json
  • dmv-public/app
  • dmv-public/components
  • dmv-public/lib
  • dmv-public/supabase
  • deployment
  • docs