Aller au contenu principal

Conventions de nommage

Statut

Document de référence — v1.0 — relu le 2026-05-10.

Backend Laravel (PHP)

Classes et fichiers

ÉlémentConventionExemple
ModèlesPascalCase singulierActeur, FeatureTab, PlayloopDevice
ContrôleursPascalCase + ControllerActeurController, AuthController
ServicesPascalCase + ServiceActeurWriteService, SupabaseTokenService
DTOsPascalCase + DTODocumentDTO, MediaDTO
RequestsPascalCase + RequestAddDocumentRequest, ExchangeTokenRequest
JobsPascalCase impératifExpireBoosts, ExpireAlertes
PoliciesPascalCase + PolicyActeurPolicy
MiddlewaresPascalCase + descriptifEnsureUserIsAdmin, EnsureMairieAccess
ProvidersPascalCase + ServiceProviderIdentityServiceProvider
ExceptionsPascalCase + ExceptionScopeViolationException

Méthodes et propriétés

ÉlémentConventionExemple
MéthodescamelCaseisEnabledFor(), buildCurrentUser()
PropriétéscamelCase$acteurId, $isGlobal
ConstantesSCREAMING_SNAKE_CASEALLOWED_SOURCES
Scopes EloquentcamelCase préfixé scopescopePinned(), scopeEnabled()

Base de données

ÉlémentConventionExemple
Tablessnake_case plurielfeature_tabs, feature_tab_overrides
Colonnessnake_caseacteur_id, is_pinned, order_idx
Clés étrangères{table_singulier}_idacteur_id, tab_id
Migrations{timestamp}_{action}_{table}0001_create_actors_table

Routes

ÉlémentConventionExemple
URLskebab-case + préfixe /api/v1//api/v1/feature-tabs, /api/v1/auth/exchange
Noms de routesdot.notationacteur.show, auth.exchange

Frontend (React)

dmv-public utilise TypeScript (.tsx, .ts). dmv_backoffice utilise JSX (.jsx, .js).

Fichiers et dossiers

ÉlémentConventionExemple
ComposantsPascalCaseActeurCard.tsx (dmv-public), ActeurCard.jsx (backoffice)
HookscamelCase préfixé useuseActeur.ts / useActeur.js
UtilitairescamelCaseformatDate.ts, slugify.js
Types / interfacesPascalCase (TypeScript uniquement)Acteur, CurrentUser, ApiResponse
ConstantesSCREAMING_SNAKE_CASEMAX_FILE_SIZE, API_BASE_URL
Dossierskebab-caseactor-card/, shared-components/

Variables et fonctions

ÉlémentConventionExemple
VariablescamelCaseacteurId, isLoading
FonctionscamelCasefetchActeur(), handleSubmit()
Props ReactcamelCaseonPress, isVisible
Événementson + PascalCaseonClick, onSubmit

Variables d'environnement

ContexteConventionExemple
Laravel (backend)SCREAMING_SNAKE_CASEAPP_KEY, SUPABASE_URL, RESEND_KEY
Vite (frontend)VITE_ + SCREAMING_SNAKE_CASEVITE_API_URL, VITE_SUPABASE_KEY
Next.js (public)NEXT_PUBLIC_ + SCREAMING_SNAKE_CASENEXT_PUBLIC_SUPABASE_URL
Next.js (serveur)SCREAMING_SNAKE_CASESUPABASE_SERVICE_KEY

Documentation (Markdown / Docusaurus)

ÉlémentConventionExemple
Fichiers{nn}-{slug}.md01-overview.md, 14-feature-flags.md
Dossiers{nn}-{slug}/06-architecture/, 12-apps/
TitresFrançais, sans majuscules superflues# Gestion des erreurs
TableauxColonnes courtes, contenu concisVoir ce document

Points à clarifier

  • Convention de nommage des variables Vite dans les apps futures (PlayLoop, Mairie, AssoSuite).
  • Préfixes de colonnes pour les tables de modules multiples (éviter les collisions).
  • Convention d'import des modules dans les services (interfaces vs classes concrètes).