Skip to content

Développement

Shikanime Deva edited this page Oct 21, 2026 · 1 revision

Développement

Prérequis

Docker 27 ou supérieur avec les plugins compose 2.35 et buildx. Node.js et pnpm aux versions du README. Les fichiers d'environnement apps/*/.env.docker et apps/*/.env.integ sont décrits dans ENVIRONMENTS.md du dépôt.

Cycle de développement

Une contribution part toujours d'un ticket. Le ticket porte le besoin, le périmètre, les critères d'acceptation et les impacts connus. Une pull request ne contient que les changements de son ticket. Les contributions purement documentaires sont les seules dispensées de ticket.

Installez puis construisez :

pnpm install
pnpm db:generate
pnpm build

Trois modes de lancement existent : local plus services distants avec pnpm run dev, full containerisé avec pnpm run docker:dev, intégration avec pnpm run docker:integ.

Portes de qualité

Avant toute soumission : pnpm lint, pnpm test, et pnpm playwright:test si un parcours utilisateur est touché. Le pre-push husky exécute les tests unitaires. Une pull request respecte le template du dépôt et reste en draft jusqu'à la fin des gates.

Organisation du code

Le backend cible est apps/server-nestjs. Le backend historique apps/server est gelé : ne le modifiez pas, corrections comprises.

Le découpage d'un module suit trois fichiers : le contrôleur, les requêtes, les utilitaires. Tout appel Prisma passe par le fichier de requêtes du module. La configuration est injectée de manière namespacée. Les factories de test utilisent mockDeep et faker ; n'appelez pas de mock dans le scope d'un describe.

Les flags de plugin valent 'enabled' ou 'disabled' via @cpn-console/hooks.

Checklist de parité de migration

La migration de apps/server vers apps/server-nestjs se rejoue événement par événement. Avant d'approuver une bascule :

  • Comparez chaque eventEmitter.emitAsync('<entity>.<verb>') émis avec les consommateurs @OnEvent et les anciens appels hook.<entity>. Un événement sans consommateur fait perdre la synchronisation Keycloak ou GitLab au pont capturePluginResult. Demandez des changements dans ce cas.
  • Vérifiez que l'ordre événement-transaction préserve la parité.
  • Un import mort dans main.module.ts est un échafaudage à retirer.
  • Énoncez la sévérité entre l'état vivant et l'état à la bascule.

Conventions de commit

Auteur : identité déclaré par la team. Signature SSH. Trailer de co-paternité pour l'assistance agent :

Co-authored-by: Automata <automata@shikanime.studio>

Message de commit en anglais ; issues, discussions et PR en français.

Clone this wiki locally