DOC/ Mis à jour le 2026-09-19
Développement
Setup, commandes et flux de contribution de ce dépôt.
- Node.js 24 ou plus récent
- pnpm 12 (épinglé via
packageManagerdans package.json)
pnpm install
pnpm dev # turbo dev : app web avec HMR
pnpm type-check # turbo type-check sur tout le monorepo
pnpm lint # eslint (règles next + typescript), zéro warning
pnpm test # turbo test (vitest)
pnpm build # build de production dans apps/web/.next
Tous les checks doivent passer avant le push : pnpm lint avec zéro
erreur, pnpm type-check avec zéro erreur, pnpm format:check sans
différence et un pnpm build réussi.
- Strings d'interface : modifiez
packages/i18n/messages/en.jsonpuis traduisez les six autres fichiers de langue. Gardez la structure de clés identique. - Docs : modifiez
packages/content/docs/en/<slug>.mdpuis mettez à jour les traductions. Les traductions manquantes retombent en anglais automatiquement. - Après avoir changé messages ou docs, lancez
pnpm buildet vérifiez chaque route de langue dans le navigateur.
Les commits du dépôt sont créés avec l'identité GitLab du propriétaire du projet pour que les jobs CI tournent avec vérification d'identité, et chaque commit porte un trailer de co-auteur :
Co-authored-by: Ella Mizuki
C'est obligatoire pour que le pipeline tourne ; voir deployment.md.
main est protégée : push par les Maintainers, force push désactivé. Les
réécritures d'historique (comme ré-attribuer la paternité de commits)
nécessitent de retirer temporairement la protection, de faire le force
push et de la restaurer avec exactement les mêmes réglages.
Le pipeline défini dans .gitlab-ci.yml exécute quatre jobs :
qualitylint et typecheck ;semgrep-sastscan de sécurité (template) ;buildbuild de production avec artefact ;secret_detectionscan de secrets (template).
Le setup pnpm est limité aux jobs quality et build. Les images des
templates de sécurité n'incluent pas corepack et ne doivent pas
l'hériter.
La validation est :
- lint, typecheck, build ;
- passage navigateur à 375, 768, 1024, 1440 et 1920px avec zéro overflow horizontal, dans toutes les langues ;
- passage reduced motion : pas de shimmer ni de transitions actives, contenu visible ;
- la navigation par ancre dégage le header fixe (scroll padding) ;
- les routes docs résolvent dans toutes les langues, y compris le fallback anglais.