Sur ce projet, yarn
est le gestionnaire de paquets utilisé
Avoir la version LTS de Node décrite dans le fichier .nvmrc
.
nvm install v20.x.x
D'abord, installer les dépendances
yarn install
Remplir les variables d'environnement dans .env.local
.
Lancer le serveur de développement
yarn db:start
yarn dev
Ouvrir le navigateur sur http://localhost:3000 pour voir le résultat
Pour lancer les tests une fois :
yarn test
Pour lancer les tests en continu :
yarn test:watch
Pour lancer les tests avec le coverage :
yarn test:coverage
Pour accéder à la base de données en CLI selon un environnement :
yarn psql:local
yarn psql:production (il faut avoir installer la CLI de Scalingo au préalable)
yarn psql:test
Pour accéder à la base de données de production avec un outils, il faut lancer un tunnel SSH avant :
scalingo -a suite-gestionnaire-numerique db-tunnel -i [CHEMIN_DE_TA_CLE_SSH_SCALINGO] [VAR_ENV_SCALINGO_POSTGRESQL_URL]
Ensuite, dans ton outils, tu configures avec 127.0.0.1:10000 et le reste grâce à la variable d'environnement SCALINGO_POSTGRESQL_URL utilisée juste au dessus.
Quand le schéma de SGN est modifié, regénérer les tables à partir des schémas Prisma, créer les migrations au besoin et générer les types pour Prisma Client :
yarn prisma:migrate
Quand tu veux ré-initialiser la base de données :
yarn prisma:drop:schema
Quand le schéma de FNE est modifié, regénérer les types FNE pour Prisma Client :
yarn prisma:generate:fne
Quand tu veux enchainer les trois dernières commandes d'affilé :
yarn prisma:reset
Quand tu veux importer les utilisateurs :
yarn migration:utilisateur
Ne pas oublier de copier/coller le fichier JS et les pictos dans /public
.
📦 Suite gestionnaire numérique
┣ 📂 .github/workflows -> Configuration de CodeQL et dependabot
┣ 📂 .husky/workflows -> Configuration du pre-push
┣ 📂 public -> Assets statiques dont le dsfr.js
┣ 📂 src
┃ ┣ 📂 app -> Les controllers
┃ ┣ 📂 components
┃ ┃ ┣ 📂 [UnComposant] -> Un composant de type page et ses enfants qui en découlent
┃ ┃ ┣ 📂 shared -> Les composants partagés par toute l'application (LienExterne...)
┃ ┃ ┗ 📂 transverse -> Les composants transverses à toute l'application (EnTete, PiedDePage...)
┃ ┣ 📂 domain -> Les objets métier
┃ ┣ 📂 gateways -> Les repositories, loaders et gateways
┃ ┣ 📂 presenters -> Les presenters
┃ ┗ 📂 use-cases -> Les use cases, queries et commands
┣ 📜 .editorconfig -> Configuration de règles de formattage de base
┣ 📜 .env -> Valeurs par défaut des variables d'environnement
┣ 📜 .env.local -> Variables d'environnement locale
┣ 📜 .eslintrc -> Configuration ESLint
┣ 📜 .gitignore -> Fichiers à ne pas commiter
┣ 📜 .nvmrc -> La version de Node à utiliser
┣ 📜 .prettierrc -> Configuration Prettier
┣ 📜 .slugignore -> Les fichiers ignorés de l'image Scalingo au build (étant limité à 1,5 Go)
┣ 📜 .stylelintrc -> Configuration Stylelint
┣ 📜 knip.json -> Configuration Knip
┣ 📜 next.config.js -> Configuration de Next
┣ 📜 package.json -> Configuration du projet Node
┣ 📜 scalingo.json -> Configuration de Scalingo
┣ 📜 sentry.xxx.config.ts -> Configuration de Sentry
┣ 📜 stryker-backend.conf.json -> Configuration de Stryker
┣ 📜 stryker-frontend.conf.json -> Configuration de Stryker
┣ 📜 tsconfig.json -> Configuration de TypeScript
┣ 📜 vitest.config.js -> Configuration de Vitest
┣ 📜 vitest.setup.js -> Actions à exécuter avant tous les tests
Controller
(ex : AccueilController
)MesInformationsPersonnelles
), elle est dans un hook custom à côté pour séparer les responsabilitésUtilisateur
)Record
et qui le transforme en ReadModel
(ex : InMemoryMesInformationsPersonnellesLoader
)DTO
) (ex : ProConnectAuthentificationGateway
)ReadModel
en un ViewModel
de manière à ce qu'un composant puisse l'affichermesInformationsPersonnellesPresenter
)UnUtilisateurLoader
)UtilisateurReadModel
)UtilisateurNonTrouveError
)