Skip to content

chore: #ORGA-609 scaffold de l'application React centralisée (frontend/) - #393

Open
damienromito wants to merge 1 commit into
epic-ORGA-493-prise-d-appelfrom
chore-ORGA-609-scaffold-app-react
Open

damienromito wants to merge 1 commit into
epic-ORGA-493-prise-d-appelfrom
chore-ORGA-609-scaffold-app-react

Conversation

@damienromito

@damienromito damienromito commented Oct 7, 2026 •

Copy link
Copy Markdown
Member

Describe your changes

Scaffold de la nouvelle application React de Présences (epic ORGA-493), générée depuis edifice-react-boilerplate (branche chore/ENABLING-1020-cleanup-boilerplate).

  • frontend/ à la racine du dépôt : front centralisé, qui remplacera à terme les fronts AngularJS de tous les modules (presences, incidents, massmailing, statistics-presences). Stack : Vite 8.2, React 18.3, React Router 7, TanStack Query 5, Zustand 5, TypeScript 6, Vitest 5, pnpm 10.34.5 / Node 24.
  • Routing réel sous /presences/app/* (basename du router en prod) : l'API Présences est à plat sous /presences/* et GET /presences/registers/:id renvoie du JSON, d'où un préfixe dédié. Première page : /presences/app/registers, avec un titre traduit (presences.register) et un bouton « Retour » vers l'AngularJS (/presences).
  • Build :
    • frontend/build.sh tourne dans l'image node:24-alpine-pnpm (frontend/docker-compose.yml). Le service node racine reste en Node 22 (cf. ORGA-663).
    • Nouvelle cible ./build.sh buildReact, appelée par buildNode (donc install / Jenkins) et par presences, après gulp. Elle copie le dist dans presences/src/main/resources/ : assets dans public/app/ (ignoré par git), index.html dans view/. En prod, base: '/presences'.
    • build.sh : docker-compose remplacé par docker compose.
  • Dev (cd frontend && pnpm dev, http://localhost:4200) :
    • Proxy recette (frontend/.env).
    • i18n servie en local par serveLocalI18n : /presences/i18n depuis presences/.../i18n/fr.json, et /i18n depuis entcore/portal (checkout voisin), avec repli sur le proxy si le fichier n'existe pas.
  • Cohabitation yarn / pnpm :
    • frontend/ impose pnpm (packageManager + preinstall: npx only-allow pnpm), le reste du dépôt reste en yarn.
    • frontend/ est exclu de Jest et du tsconfig.json racine, pour que la CI yarn test (Node 16) ne ramasse pas les tests Vitest.
  • Husky : hooks dans frontend/.husky, filtrés : pre-commit (lint-staged) et pre-push (build) ne tournent que si frontend/ est concerné.
  • i18n : ajout de presences.react.back et presences.react.notfound.or.unauthorized (fr / en).

Hors périmètre : la route serveur qui sert view/index.html (ORGA-610). L'application n'est donc visible pour l'instant qu'en pnpm dev. React Compiler : ORGA-664.

Checklist tests

  • cd frontend && pnpm build, pnpm test (Vitest), pnpm lint, prettier --check : OK.
  • ./build.sh buildReact puis ./build.sh presences (Docker) : OK.
  • Sync : view/index.html à côté de presences.html, assets dans public/app/, URLs en /presences/public/app/....
  • Jest racine : aucun test de frontend/ ramassé.
  • Hooks Husky : pre-commit et pre-push déclenchés sur ce commit.
  • pnpm dev avec une session recette valide : titre « Appels » et bouton « Retour » affichés (non vérifié de bout en bout : recette injoignable lors des tests).
  • ⚠️ Après un build Docker, refaire pnpm install en local : node_modules est partagé avec le conteneur Linux.

Issue ticket number and link

ORGA-609 (epic ORGA-493)

Checklist before requesting a review (magic string, indentation, comment/documentation...)

  • I have detailed the tests to do in my feature/fix in order to prevent consequents regressions (must specify in Checklist tests)
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation (API Doc etc...) - (must specify in Description for target version)
  • If it is a consequent feature, I have added thorough tests.
  • I have added tests that prove my fix is effective or that my feature works
  • Any dependent changes have been added to this project (must specify in Description)

🤖 Generated with Claude Code

Nouvelle application React (Vite 8, React 18, pnpm, Node 24) générée depuis
edifice-react-boilerplate (chore/ENABLING-1020-cleanup-boilerplate), à la
racine du dépôt : elle remplacera à terme les fronts AngularJS de tous les
modules. Première page : /presences/app/registers (titre traduit + bouton
Retour vers l'AngularJS).

- Routing réel sous le préfixe /presences/app/* pour ne pas heurter l'API
  à plat sous /presences/* (GET /presences/registers/:id).
- Build : frontend/build.sh (image node:24-alpine-pnpm) + cible buildReact
  du build.sh racine, appelée par buildNode et presences après gulp ; assets
  dans presences/.../public/app, index.html dans view/.
- Dev : proxy recette sur /presences, i18n local (presences/fr.json et
  portal/fr.json d'entcore) via serveLocalI18n.
- Husky filtré sur frontend/ ; pnpm imposé dans frontend/, yarn ailleurs.
- frontend/ exclu de Jest et du tsconfig racine.
- build.sh : docker-compose -> docker compose.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant