revolunet / immersion-facile

Service public numérique 🇫🇷 qui a pour objectif de faciliter les immersions professionnelles

Home Page:https://immersion-facile.beta.gouv.fr

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

Cypress

Voir Documentation frontend - Cypress

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)

About

Service public numérique 🇫🇷 qui a pour objectif de faciliter les immersions professionnelles

https://immersion-facile.beta.gouv.fr

License:MIT License


Languages

Language:TypeScript 98.8%Language:JavaScript 0.6%Language:SCSS 0.4%Language:HTML 0.1%Language:CSS 0.1%Language:Shell 0.1%Language:Procfile 0.0%