Nommage
Conventions de nommage des fichiers, identifiants, tables et enums.
Fichiers en kebab-case
Les fichiers de code sont en kebab-case, par exemple report-priority.ts. La règle est appliquée par Biome via useFilenamingConvention.
Les fichiers imposés par les frameworks gardent leur convention, car elle est dictée par l'outil et non par nous : page.tsx, layout.tsx, les routes dynamiques de Next, les fichiers spéciaux d'Expo. Ces répertoires sont exemptés de la règle via des overrides Biome.
Langue du code
Le code est en anglais : noms de variables, de fonctions, de types. Les commentaires internes peuvent être en français lorsqu'ils expliquent une intention métier subtile.
Identifiants et composants
| Élément | Convention | Exemple |
|---|---|---|
| Fichier de code | kebab-case | report-priority.ts |
| Composant React | PascalCase | SignInForm |
| Fonction et variable | camelCase | reportPriority |
| Type et interface | PascalCase | TrustLevel |
| Constante partagée | SCREAMING_SNAKE_CASE | TRUST_LEVELS |
Identifiants de base de données
Les tables métier utilisent des identifiants ULID, triables dans le temps et adaptés à la pagination par curseur. Les tables gérées par Better Auth conservent leurs identifiants text d'origine, on ne les touche pas.
export const ulidPk = () =>
text("id")
.primaryKey()
.$defaultFn(() => ulid());Enums Postgres
Les enums sont déclarés explicitement avec pgEnum et un nom stable, réutilisés dans les tables. Le nom de l'enum est unique dans toute la base.
export const postStatus = pgEnum("post_status", ["active", "removed", "quarantined"]);