Aller au contenu principal

Contribuer

Démarrer en local​

Prérequis : Node 22, pnpm 10, Docker (ou PostgreSQL 16 + Redis). Android : JDK 17+ et le SDK.

docker compose up -d # PostgreSQL + Redis
pnpm install
cp apps/api/.env.example apps/api/.env # renseigner JWT_SECRET et TOKEN_ENCRYPTION_KEY
cp apps/web/.env.example apps/web/.env.local
pnpm --filter @agenda/api db:migrate
pnpm dev # API :4000 (Swagger : /docs) · Web :3000

Documentation (site séparé, dépendances à part) :

cd apps/docs && npm ci && npm start # http://localhost:3000, rechargement à chaud

Avant de proposer une modification​

pnpm format:check && pnpm lint && pnpm typecheck && pnpm test
pnpm --filter @agenda/web e2e # parcours web (API et web démarrés)
cd apps/android && ./gradlew lintDebug testDebugUnitTest assembleDebug

Conventions​

  • Français pour l'interface, la documentation et les commentaires ; l'anglais pour les identifiants et les messages d'erreur techniques de l'API.
  • Contrats d'abord : un nouveau champ ou une nouvelle route commence par son schéma Zod dans packages/contracts ; la doc OpenAPI suit toute seule.
  • Commentaire /** … */ sur chaque méthode de contrôleur : sa première phrase devient le résumé de la route dans la référence de l'API.
  • Migrations Prisma générées (prisma migrate diff), jamais écrites à la main.
  • Pas de secret dans le dépôt : ni clé, ni jeton, ni fichier de compte de service, ni adresse personnelle.

À mettre à jour dans la même PR​

Vous changez…Mettez à jour
une route de l'APIpnpm --filter @agenda/api build && pnpm --filter @agenda/api openapi (la CI le vérifie)
une fonction visiblele guide (docs/guide/) et les nouveautés (docs/changelog.md)
une donnée collectée, un prestataireConfidentialité & RGPD, la politique en ligne (privacyPolicy dans apps/web/messages/*.json) et, pour Android, la sécurité des données Google Play
une variable d'environnementDéploiement et docker-compose.prod.yml

Écrire une entrée de changelog​

En tête de docs/changelog.md, sous la date du jour (créée si besoin), un titre court avec le numéro de PR, puis une ligne par changement du point de vue de l'utilisateur :

### Liste de courses partagée (#43)

- ✨ **Liste de courses partagée** en temps réel.
- 🐞 Un article coché hors ligne n'était pas envoyé.

CI (GitHub Actions)​

Le dépôt est privé : les minutes sont comptées. Chaque workflow ne tourne que si c'est utile :

WorkflowQuand
CI (API, web, E2E, images Docker)PR et main, sauf changements limités à la doc ou à l'app Android
Androidquand apps/android/** change
Android (émulateur)à la demande (Run workflow) ou étiquette emulateur sur la PR
Android — APK à installersur main quand l'app Android change
Documentationquand docs/** ou apps/docs/** change
Disponibilitétoutes les 2 heures