anct-cnum / suite-gestionnaire-numerique

Suite gestionnaire numérique
GNU Affero General Public License v3.0
1 stars 0 forks source link

Suite gestionnaire numérique

Sur ce projet, yarn est le gestionnaire de paquets utilisé

🛠️ Prérequis

Avoir la version LTS de Node décrite dans le fichier .nvmrc.

nvm install v20.x.x

🚀 Démarrage

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

🧪 Tests

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

⬆️ Mise à jour du DSFR

Ne pas oublier de copier/coller le fichier JS et les pictos dans /public.

🛠️ Les outils

TypeScript

ESLint

Stylelint

Prettier

Depcheck

Knip

Husky

Vitest

Testing library

Stryker

Arboresence

📦 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

Component

Domain

Gateway

Presenter

Use case