Site 100 % statique, en Typescript, développé avec React.
# Clone this repo on your computer
git clone --depth 100 [email protected]:betagouv/mon-entreprise.git
# Mettre à jour votre config git locale
git config blame.ignoreRevsFile .git-blame-ignore-revs
Si l'historique des commits est trop volumineux, vous pouvez utiliser le paramètre depth
de git pour ne télécharger que les derniers commits.
Si possible, assurez-vous d'avoir toutes les clés d'API nécessaires dans votre fichier
site/.env
(un template est disponible dans site/.env.template
).
Note
Pas d'inquiétude, ceci n'est pas nécessaire pour effectuer une première contribution à la base de code**
Cependant, vous en aurez besoin pour la commande yarn postinstall
et pour les commandes de traduction automatique français -> anglais.
Si vous êtes confronté à ce type de besoin, demandez l'aide des contributeurs du projet.
# Install the Javascript dependencies through Yarn
yarn install
# Optional : fetch API data (stats, releases, etc.)
yarn postinstall
# Run the dev server for mon-entreprise
yarn start
Nous utilisons vitest pour les tests.
Les règles publicodes de modele-social
sont testées dans le dossier [./test/regression]
avec des snapshots.
yarn test
Nous testons un grand nombre de situations sur chaque simulateur, pour vérifier que les modification de règles suite à un changement de législation ou à l'implémentation d'un nouveau dispositif n'entrainent pas de résultats inattendus.
Si les changements apportés sont attendus, il est possible de mettre à jour les snapshots avec la commande suivante :
yarn test -u
Nous utilisons Cypress pour les tests d'intégration. Pré-requis:
yarn start &
yarn test:cypress
Pour tester la version anglaise :
yarn test:cypress:mycompanyinfrance
Nous utilisons des fixtures pour simuler les appels API. Pour les mettre à jour, il faut lancer le serveur de dev et lancer la commande suivante :
test:cypress:record-http
Le site est déployé sur Netlify, à chaque push sur la branche master
. Par ailleurs, toutes les PR sont automatiquement déployées sur des URL de type https://<PR-NUMBER>--mon-entreprise.netlify.app
.
La plupart des pages sont pré-rendues statiquement lors du déploiement, pour améliorer les performances et le SEO. Un script se charge de générer les pages statiques grâce à renderToReadableStream
, et de les placer dans le dossier site/dist/prerender
.
Pour ajouter des pages à pré-rendre, il faut les ajouter dans le fichier site/build/prerender.ts
.
A noter : nous n'utilisons pas nextJS
pour des raisons historiques, mais il serait souhaitable de migre l'application à l'avenir
Pour ajouter un nouveau simulateur, il faut :
- Créer un nouveau dossier dans
site/source/pages/simulateurs/
(ou/assistant
si il s'agit d'un outil avec un parcours sur plusieurs pages). - Créer un fichier
config.tsx
dans ce dossier, qui contient informations reliées au simulateur (nom, description, icône, etc.). Le type est PageConfig. Voir un exemple - Créer la config de simulation dans le fichier
simulationConfig.ts
. Cette dernière contient la situation Publicodes et les paramètres pour configurer le simulateur. Voir un exemple - Ajouter le simulateur sur la page /simulateurs-et-assistants, dans le fichier
site/source/pages/simulateurs-et-assistants/index.tsx
** - Ajouter une route pour le simulateur dans le fichier
sitePaths
, avec la version anglaise également.
Les redirections sont gérées par netlify, via le fichier netlify.base.toml
.
C'est également dans ce fichier que sont définies les Content-Security-Policy
.
Le site est disponible en français, et en anglais sur https://mycompanyinfrance.urssaf.fr
Les traductions se trouvent dans le répertoire site/source/locales
.
La librairie utilisée pour la traduction de l'UI est react-i18next.
Lorsque l'on introduit une nouvelle chaîne de caractère dans l'UI il faut
systématiquement penser à gérer sa traduction, via un composant <Trans>
, ou
via la fonction t
Le CI fait une analyse statique du code pour repérer les chaînes non traduites, dans le moteur et l'UI :
yarn run i18n:check
Pour traduire automatiquement les chaînes manquantes via l'api Deepl :
yarn run i18n:translate
N'oubliez pas de vérifier sur le diff que les traductions vous paraissent correctes.
Il est possible de simuler localement le comportement de l'application après le build complet, y compris le pré-rendu statique et les redirection Netlify, avec les commandes suivantes:
yarn run build:preview
yarn preview
# pour la version anglaise
yarn preview:en
Nous utilisons ATInternet pour le reccueil des usages. La hierarchie des pages est organisée en 3 chapitre et un nom de page. Seul le chapitre 1 et le nom sont obligatoires.
- Chapitre 1 : par exemple
simulateurs
ouassistant
. La liste est définie dans le fichiersource/components/ATInternetTracking/index.tsx
- Chapitre 2 : le nom du simulateur / de l'assistant / de la famille de simulateur
- Chapitre 3 : le nom du simulateur si il n'est pas dans le chapitre 2
On utilise le nom de la page pour signifier les étapes dans le parcours de l'utilisateur. Par exemple, pour la plupart des simulateurs, on a les pages suivantes accueil
, simulation_commencée
simulation_terminée
. Quand bien même il n'y a qu'une seule et même URL.
Cela permet de suivre le parcours des utilisateurs dans les simulateurs, et de voir les taux de completion facilement. Ces données sont ensuites compilées pour afficher la page /stats.