Skip to content

betagouv/mon-service-securise

Repository files navigation

MonServiceSécurisé

MonServiceSécurisé est un service numérique développé par le laboratoire d'innovation de l'ANSSI, en lien avec l'incubateur BetaGouv de la direction interministérielle du numérique. Il vise à aider les collectivités territoriales et les autres entités publiques à sécuriser et à homologuer leurs services publics numériques (sites web, applications mobiles, API).

Configuration de l'environnement de développement

Il est nécessaire en prérequis d'avoir installé Git, Docker et Node.js v16.

Commencer par récupérer les sources du projet et aller dans le répertoire créé.

$ git clone https://github.com/betagouv/mon-service-securise.git && cd mon-service-securise

Créer un network Docker pour accueillir MonServiceSécurisé en local.

$ docker network create mss-network

Créer un fichier .env à partir du fichier .env.template et renseigner les diverses variables d'environnement.

Lancer le script scripts/start.sh

Se connecter au conteneur de la base de données et créer une nouvelle base mss pour un utilisateur postgres.

$ docker compose exec mss-db createdb -U postgres mss

Exécuter les migrations depuis le conteneur du serveur web.

$ docker compose exec web npx knex migrate:latest

Le serveur est configuré et prêt à être redémarré.

Lancement du serveur

$ docker-compose restart web

(Ou arret et ré-exécution de ./script/start.sh)

Le serveur devrait être accessible depuis un navigateur à l'URL http://localhost:[PORT_MSS] (avec comme valeur pour PORT_MSS celle indiquée dans le fichier .env).

Il est alors possible de créer un compte utilisateur à l'url http://localhost:[PORT_MSS]/inscription.

Outils en local

  • Il est possible d'attacher un debugger nodejs car MSS est démarré avec --inspect=0.0.0.0.
  • Postgres est relayé sur le port 5432 de l'hôte. Donc le requêtage via un outil graphique est possible.

Exécution de la suite de tests automatisés

Les tests peuvent être lancés depuis un conteneur Docker en exécutant le script scripts/tests.sh. Les tests sont alors rejoués à chaque modification de fichier du projet sur la machine hôte.

Conception

Composants Svelte

Certaines parties du frontend sont suffisament compliquées pour ne pas être codées en jQuery. Pour celles-ci, on utilise Svelte. Le code est rangé dans /svelte.

En local, les composants sont build à la volée grâce à l'option vite build --watch.

En production, ils sont build via le build du package.json.

Dans les deux cas, le code généré se retrouve dans /public/composants-svelte pour être référencé depuis les .pug.