Document mis à jour le 05/08/2024
- Modules principaux & versions
- Architecture
- Configuration
- Documentation
- Tests
- Styles
- Pipeline
- Déploiement
- Extra.
- Stack technique
- Code
App | Version |
---|---|
Node | 18.x |
YARN | 1.22.x |
Next.js | 12.1.0 |
React | 17.0.2 |
Webpack | 5.74.0 |
esLint | 8.0.1 |
entourage-job-front/
.github
: configuration de la CI avec Github Actions.husky
: scripts de hook de commit avec Husky.storybook
: Dossier de configuration de Storybookassets/
: fichiers de styles globaux avec UIkitcypress/
: fichiers de tests e2e Cypresspublic/
: stockage des ressources non dynamique accessible publiquement tels que les images, le CSS ou les fontssrc/
api/
: dossier contenant la définition de l'Apicomponents/
: dossier contenant les composants React écrit avec les particularités de Next.jsconstants/
: fichiers de constanteshooks/
: hooks communs à plusieurs composantslib/
: librairies pure JS (analytics ...)pages/
: dossier contenant les composants React de rendu de pagesstore/
: dossier contenant la définition du store reduxjs/toolkitstyles/
: feuilles CSS compilés à partir de UIkit + certains styles customsuse-cases/
: store redux séparé en modulesutils/
: fonctions utilitaires communestsconfig
: configuration TS pour l'app
.editorconfig
: configuration par défaut de la syntaxe du code de l'éditeur.env
: fichier de configuration de votre environnement local.env.dist
: fichier de distribution des variables d'env.eslintignore
: configuration pour ESLint.eslintrc.json
: configuration pour ESLint.gitignore.json
: configuration des fichiers et dossiers ignorés dans le stage de Git.lintstagedrc.js
: fichier de configuration du lint-stage.prettierignore
: configuration des fichiers et dossiers ignorés par Prettier.prettierrc.json
: configuration pour Prettiercypress.config.ts
: configuration pour Cypressdocker-compose.yml
: Définition des différents containers Docker pour le développement localDockerfile
: configuration du container Docker de l'applicationjest.config.js
: configuration de JestMakefile
: permet l'execution de la commandemake init
créant interactivement le fichier.env
next-env.d.ts
: Fichier auto-généré par nextjsnext.config.js
: configuration pour nexjspackage.json
: configuration du projet et des dépendancesProcfile
: configuration des process Heroku à lancer après déploiementserver-next.js
: point d'entrée de lancement du serveurtracer.ts
: fichier d'initialisation de la connexion à DataDognext.config.js
: fichier de configuration pour Next.jsProcfile
: configuration des process Heroku à lancer après déploiement.prettierrc.json
: configuration pour Prettier
- Avoir installé yarn Yarn est requis pour installer le projet
npm install -g yarn
-
Avoir correctement intallé et exécuté le back-end Entourage Pro
-
Avoir créé un fichier avec les variables d'environnement nécessaires en utilisant .env.dist
Installation des dépendances
yarn install
yarn dev
Pour le moment sans Docker
yarn build
Puis
npm start
yarn lint && yarn format
Avec docker, précéder chaque commande par docker exec front ${cmd}
Ces deux commandes sont lancées par les hooks de commit
Si un bug apparait lors de l'utilisation de git ajouter l'option suivante
--no-verify
Du fait d'une différence nécessaire de configuration TS entre le dossier src
et cypress
, nous avons dû créer un fichier tsconfig.base.json
à la racine du projet. Le dossier src
de l'app autant que le dossier cypress
des tests utilisent chacun leur propre tsconfig
en extension de la base.
Le path du tsconfig
pour le build de l'app est fixé dans le fichier next.config.ts
.
Pour tester le typage du projet (app + cypress), utiliser
yarn run test:ts-check
Les différents composants de l'application front sont documentés dans un storybook.
Pour executer Storybook en local :
yarn storybook
Lorsque vous ajoutez de nouvelles icones dans "/assets/icons", n'oubliez pas de les intégrer au storybook grâce à cette commande :
yarn add-icons
Suppression progressive de la librairie UIkit
Les fichiers du thème globale, qui utilisent la librairie UIkit, se trouvent dans le dossier /assets/custom
-
entourage.less
: style globale qui surcharge le thème par défaut deUIkit -
entourage.print.less
: style utilisé pour le CV en version PDF -
/icons
: icônes en SVG rajoutés aux icônesUIkit
Après avoir modifié les fichiers du thème, ou après avoir rajouté un icône, il faut recompiler les fichiers en CSS
- Installer d'abord
UIkitau sein de son propre module
yarn uikit-install
- Si le module est déjà installé, le mettre à jour
yarn uikit-update
- Ensuite, compiler les fichiers SCSS en CSS
yarn uikit-compile
Les fichiers se retrouvent dans le dossier /src/styles/dist.
La commande pour lancer les tests une fois
yarn test
La commande pour lancer les tests en mode watch
yarn test:watch
Si vous souhaitez obtenir le code coverage
jest --coverage
Un dossier coverage sera créé. Afin de pouvoir le consulter dans le navigateur.
La commande suivante permet de lancer les tests Cypress:
yarn cypress:local
Pour obtenir la vidéo des tests sur cypress.io, utilisez la commande suivante:
yarn cypress:io
Lire le fichier .github/workflows/main.yml Ce fichier constitue le workflow Github Actions
À chaque évènement de type: open, synchronized, reopened sur une PR executera le workflow.
Et ici la documentation concernant l'action Cypress.io.
Le déploiement se fait automatiquement grâce à Github Actions et Heroku.
Si une branche, après PR et review, est mergée à develop
alors l'application sera automatiquement déployée sur la pre-production: https://entourage-job-front-preprod.herokuapp.com
Si une branche, après test en pre-production, est mergée à master
, alors l'application sera automatiquement déployée sur la production: [https://Entourage Pro.fr](https://Entourage Pro.fr)
Régulièrement, lancer la commande ci-dessous, afin de cleaner le code en supprimant les dependances, imports, et exports qui ne sont plus utilisés
npx dead-exports
L'ensemble des documentations du répertoire : ./docs