Ce projet a été démarré avec Create React App.
Vous avez besoin de node installé, version >= 16. Dans 'front', vous devez installer l'application avec la commande :
Vous pouvez modifier les variables d'environnement dans ce nouveau fichier .env
On peut ensuite lancer le script qui nous intéresse dans la liste ci-dessous.
npm run dev
: démarre l'appli en mode dev
npm run test
: lance les tests
npm run build
: construit les bundles de production
L'arborescence du front est la suivante :
-
core-logic
: c'est là que se fait la gestion de l'état de l'application. Il ne doit pas y avoir dejsx
,css
ouhtml
ici. Cette partie concentre la logique métier pure, l'orchestration du state. Les requêtes et les souscriptions se passent ici également. C'est la partie du front qui est testée. -
css
: on trouve ici tailwindcss et des règles/petits overrides du dsfr propre à notre app. -
generated/data
: Les données générées par l'ancienne archi (codegen) et vouées à être remplacées par des appels à l'API. -
generated/dataLayer
: Les types exportés par le Data Layer/data_layer
. -
types
: Les types et les interfaces partagées. -
ui
: la bibliothèque de composants. On cherche à faire des composants indépendants de l'application. Il ne doivent pas connaitre, ni faire référence à redux. On utilise beaucoup material-ui. Les imports à material-ui doivent se faire uniquement dans le dossierui
. Cela permet de changer facilement de design, sans avoir à toucher directement au code de l'application. -
utils
: on regroupe là les petites fonctions utilitaires qui peuvent servir un peu partout. -
interface
: les interfaces typescript qui sont ici sont générées par le backend. C'est sur elle que l'on s'appuie pour garantir le contrat d'interface avec le backend. -
app
: c'est là qu'est construite l'application react à proprement parlée. Elle va consommer ce qui est danscore-logic
et dansui
. -
server/zipUrls.js
: module intégré au serveur de ressources du front, permettant de télécharger une liste d'URLs passée dans le corps d'une requête POST émise par le front, et de renvoyer une archive zip des fichiers téléchargés. Ce module est intégré dans le serveur de développement (cfsetupProxy.js
) et dans celui de production (cfserver.js
).
Les feuilles de style suivantes sont utilisées :
public/dsfr.css
le dsfr chargé à partir de index.htmlsrc/css/tailwind.css
tailwindcss chargé depuis index.tsxsrc/css/app.css
quelques styles globaux chargés depuis index.tsx
Pour que la cohabitation entre tailwind et le dsfr se passe bien, il est recommandé de ne pas utiliser de classes tailwind sur des composants dsfr.