Nommage
kebab-case pour fichiers, camelCase pour code, conventions par contexte
| Contexte | Convention | Exemple |
|---|
| Fichiers TS/TSX | kebab-case | establishment.service.ts |
| Dossiers | kebab-case | qr-codes/ |
| Composants React | kebab-case (fichier) | sign-in-form.tsx |
| Schémas Drizzle | kebab-case + .schema.ts | establishment.schema.ts |
| Routes tRPC | kebab-case + .router.ts | establishment.router.ts |
| Tests | kebab-case + .test.ts | establishment.service.test.ts |
| Contexte | Convention | Exemple |
|---|
| Variables | camelCase | const toiletName = ... |
| Fonctions | camelCase | function createEstablishment() |
| Types / Interfaces | PascalCase | type Establishment = ... |
| Enums | PascalCase | enum ReportStatus { ... } |
| Constantes | UPPER_SNAKE_CASE | const MAX_FREE_TEXT_LENGTH = 200 |
| Composants React | PascalCase | function SignInForm() |
| Contexte | Convention | Exemple |
|---|
| Tables | snake_case singulier | establishment, qr_code |
| Colonnes | snake_case | created_at, establishment_id |
| Enums PG | snake_case | report_status, issue_category |
| Index | idx_{table}_{column} | idx_report_toilet_id |
| FK | {table}_{column}_fk | toilet_establishment_id_fk |
- Anglais pour tout le code (variables, fonctions, types, noms de tables)
- Français pour les commentaires internes si besoin, et la documentation
- Pas d'abréviations sauf si universellement comprises (
id, url, db)
- Pas de préfixes I/T sur les types (
Establishment, pas IEstablishment)