Skip to content

Conventions ​

Les règles suivies dans tout le code mobile. Les respecter garde le code homogène et facile à relire.

Le code ​

RègleExemple
Fichiers en kebab-caseclock-button.tsx, use-today.ts
Composants en PascalCaseClockButton, TeamDetail
Hooks commençant par useuseToday, useQuery
Fonctions et variables en camelCasefetchWorkingTimes, workedMinutes
Constantes globales en MAJUSCULESDAILY_TARGET_MINUTES, HOLD_MS
Imports avec @/import { api } from '@/api/client'
Exports nommés pour les composants et fonctionsexport function Button(...)
export default seulement pour les écransexpo-router l'exige
Styles en bas du fichierconst styles = StyleSheet.create({...})
Types partagés dans src/types/api.tsUser, WorkingTime

L'ordre des imports ​

  1. Les bibliothèques (expo-router, react, react-native, react-i18next).
  2. Une ligne vide.
  3. Les fichiers de l'app avec @/, par ordre alphabétique.
  4. Une ligne vide, puis les imports relatifs (./icon) s'il y en a.

Les commentaires ​

Pas de commentaires superflus. Le code doit se lire seul : des noms clairs plutôt qu'un commentaire qui explique un nom obscur. Un commentaire n'a sa place que pour une raison non évidente (une contrainte de l'API, un contournement).

La typographie ​

Jamais de tiret cadratin (le long tiret de ponctuation) dans le code ni dans les textes. On utilise une virgule, deux points, des parenthèses ou le point médian ·.

Les couleurs ​

Uniquement les couleurs de src/theme/colors.ts, issues de la maquette Figma. Jamais de valeur #... écrite directement dans un composant.

Les textes ​

Aucun texte visible écrit en dur dans un composant : tout passe par t('...'), avec la clé dans en.ts et fr.ts.

Les données ​

  • Un écran n'appelle jamais fetch. Il passe par une fonction de src/api/.
  • Lire avec useQuery, modifier avec useAction.
  • Les dates de l'API sont converties dans src/api/, jamais dans un écran.
  • Les erreurs sont lues avec errorStatus, errorCode, fieldError, jamais en lisant la phrase de l'API.

Les dépendances ​

  • Toujours npx expo install <paquet>, jamais npm install <paquet>.
  • Préférer un module expo-* à une bibliothèque tierce.
  • Avant d'ajouter une bibliothèque, vérifier qu'elle marche dans Expo Go. Sinon il faudra un « development build ».

Avant de commiter ​

bash
npx tsc --noEmit
npx expo lint

Les commits ​

Format Conventional Commits, en anglais, en minuscules :

feat(mobile): correction reviews, absences and week validation
fix(mobile): app icon and splash from the TimeManager logo
chore(mobile): Expo SDK 57 patch updates
docs(mobile): architecture README

Un commit regroupe un ensemble cohérent (une fonctionnalité, une correction), pas un fichier isolé.