/immersion-facile

Service public numĂ©rique đŸ‡«đŸ‡· qui a pour objectif de faciliter les immersions professionnelles

Primary LanguageTypeScriptMIT LicenseMIT

Immersion Facile

Le but du projet immersion facile est de faciliter les immersions professionnelles. Il y a pour cela plusieurs axes de travail :

  • DĂ©matĂ©rialiser entiĂšrement les demandes d'immersion et les interactions des conseillers pĂŽle emploi, missions locales, etc.
  • Constituer un annuaire des entreprises qui sont susceptible d'accueillir en immersion
  • Rendre les immersions recherchables par les bĂ©nĂ©ficiaires

Prérequis

Pour démarrer le projet il vous faut git, docker et node (version 18 ) installée sur la machine. Nous utilisons pnpm comme gestionnaire de paquets (pour l'installer : npm install -g pnpm).

DĂ©marrer le projet

  • Demander Ă  ĂȘtre ajoutĂ© comme contributeur au projet gip-inclusion/immersion-facile
  • Cloner le projet

Cloner le projet

git clone ssh://git@github.com:gip-inclusion/immersion-facile.git immersion-facile
cd immersion-facile

Aperçu du projet

Le projet Immersion Facilitée est un monorepo composé des projets suivants :

  • back/ : le back-end de l'application
  • front/ : le front-end de l'application
  • shared/ : les Ă©lĂ©ments partagĂ©s (types, schemas, utilitaires, etc)
  • libs/ :
    • react-design-system : les composants d'interfaces spĂ©cifiques Immersion FacilitĂ©e (hors DSFR)
    • html-templates : lib maison de gĂ©nĂ©ration de contenus HTML (pour les emails par ex)
    • scss-mapper : un gĂ©nĂ©rateur de fichier TS Ă  partir de fichier Sass (*.scss)

Installer les dépendances nodes

Chaque projet (front, back) du repo décrit ses dépendances, mais elles sont managées globalement via PNPM.

Pour installer les dépendances nécessaires à tous les projets :

pnpm install

Faire une copie du .env.sample qui devra s'appeler .env:

cp .env.sample .env
cp .env.sample back/.env

Jouer le script pour créer les variables d'env du front :

pnpm generate-front-envfile

Le .env permet de configurer le mode de fonctionnement de l'application.

On peut lancer avec une base de données postgres simplement en mettant REPOSITORIES="PG".

On peut démarrer facilement une DB local avec docker-compose :

docker-compose -f docker-compose.resources.yml up --build

Il y aura alors une DB postgres accessible sur le port 5432, et un adminer sur le port 8080.

La DATABASE_URL Ă©tant fourni, cela devrait fonctionner sans autre configuration.

Les autres services ont une implĂ©mentation IN_MEMORY mais pour fonctionner avec les vĂ©ritables services il faut fournir les secrets /clĂ©s API. Ce n'est pas censĂ© ĂȘtre nĂ©cessaire en local, si jamais c'Ă©tait le cas, veuillez vous rapprocher de l'Ă©quipe.

Lancer le projet avec docker-compose

On peut dĂ©marrer le front et le back en mĂȘme temps (en mode dev) avec la commande (depuis la racine du projet) :

pnpm dev

Pour le backend se référer ensuite ici: Documentation backend

Pour le frontend se référer ensuite ici: Documentation frontend

Outillage

Playwright

Voir Documentation frontend - Playwright

CLI

Husky

Husky sert Ă  automatiser des executions de commandes projet avant les commits et les push (format, lint, test...). En amont des commandes de commit et de push, des tests sont effectuĂ©s pour vĂ©rifier que le commit ou le push peut ĂȘtre effectuĂ© (ex: typecheck)

La configuration husky est présente ici .husky
Documentation locale .husky.md
Documentation officielle

Lint-staged

Lint stage permet de ne jouer le lint et le prettier que sur les fichiers qui ont été stage dans Git La configuration lint-stage est présente ici .tooling/.lint-staged/.lintstagedrc Documentation officielle

Sass to TS

Voir Documentation frontend - Sass to TS

Turbo

TODO DOC

MĂ©tier

Le projet a deux grandes parties :

  • les conventions dĂ©matĂ©rialisĂ©es
  • les ajouts d'entreprises ainsi que les recherches associĂ©es

Convention dématérialisée

Le flux des statuts de convention est le suivant :

![img.png](doc/flux de statuts de convention.png)