In root folder, install all dependencies (also installs the backend dependencies):
pnpm install
pnpm dev-in-memory
pnpm dev
You can typecheck the project with :
pnpm typecheck
If you want to make sure everything is fine before pushing for exemple, you can run :
pnpm fullcheck
The frontend and the backend have some shared code which is located in the shared
folder.
It is a workspace, used in front and in back
Le projet Immersion Facilitée se base sur le Système de Design de l'État- DSFR via @codegouvfr/react-dsfr.
-
dans la très grosse majorité des cas, si le besoin est suffisamment proche de ce qui est fourni, on voudra implémenter des composants existants via
react-dsfr
. -
dans des cas plus rare de besoin spécifique au projet, on se permettra de créer un composant dans notre lib
react-design-system/immersionFacile
Ces composants ne sont que des composants de présentation (pas de logique liée à l'app - Redux, appels externes, etc) mais peuvent charger du CSS / Sass custom (via Sass to TS)
Le projet utilise la méthodo BEM pour nommage ses blocks custom, préfixés par im
+ le nom du composant React, le tout en kebab case. Ex : pour le composant HeroHeader
, le résultat attendu est .im-hero-header
Pour les éléments et modifiers, nous utiliserons la syntaxe :
.my-block__element--modifier
, sans profondeur additionnelle, chaque partie étant en kebab case.
- le DSFR propose un lot de classes utilitaires qu'il faut utiliser en priorité. Ex :
.fr-mt-4w
plutôt quemargin-top: 3rem
. - on utilise toujours les classes du DSFR et les classes custom enrobés via les utilitaires de
react-dsfr
ettss-react
fr.cx()
et (éventuellement)cx()
. Ex:cx(fr.cx("fr-mt-4w"), Styles.imageWrapper)
- si une règle CSS ne trouve pas d'équivalent dans le DSFR, on peut se permettre de la déclarer en CSS ou Sass custom.
- à la racine du projet
pnpm run dev
: pour lancer le projetpnpm playwright test:local
pour lancer les tests
sudo apt-get update && sudo apt-get install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb
Sass to TS permet de générer des fichiers TS à partir de fichier Sass. C'est un moyen simple et pratique pour s'assurer que les classes que l'on utilise sont toujours employées et prévenir le dev en cas de faute de frappe, autocomplétion ou changement de naming.
Il s'emploie de la façon suivante :
pnpm make-styles im-search-page src/app/pages/search/
Dans cet exemple
im-search-page
est le nom du composant (block) que l'on va utiliser (BEM)src/app/pages/search/
est le path contenant(s) le fichier(s) à convertir en TS
Résultat attendu :
- à partir de ce fichier : https://github.com/gip-inclusion/immersion-facile/blob/dev/front/src/app/pages/search/SearchPage.scss
- on obtient un fichier
${fileName}.styles.ts
, soit : https://github.com/gip-inclusion/immersion-facile/blob/dev/front/src/app/pages/search/SearchPage.styles.ts - qui peut être utilisé via un import par défaut, exemple : https://github.com/gip-inclusion/immersion-facile/blob/dev/front/src/app/pages/search/SearchPage.tsx#L29