template

Template est une application Next développée par la Fabrique des ministères sociaux et qui utilise le Système de Design de l'État.

L'application dispose de deux branches principales :

  • main qui est un template de site statique sans la partie authentification
  • hasura qui ajoute un serveur Next.js, hasura et une authentification KeyCloak

Ce template intègre les recommendations de la documentation technique SocialGouv

Description

D'un point de vue fonctionnel

Ce template est composé de page :

  • Page principale
  • Politique de confidentialité
  • Mentions légales
  • Conditions générales d'utilisation
  • Statistiques d'utilisation (fonctionnant avec matomo)
  • Déclaration d'accessibilité
  • Healthz
  • Page 404

En plus dans la branche hasura :

  • Page d'authentification
  • Page d'inscription
  • Page profil
  • Interactions avec la base de données

D'un point de vue technique

En plus dans la branche keycloak :

  • keycloak qui est un serveur d'authentification (exclusive à main)
  • next-auth qui est un wrapper pour gérer l'authentification au sein de l'application (exclusive à main)
  • hasura qui permet d'exposer une API GraphQL sur votre Postgres et de gérer les authorisations (RBAC)

Lancer le code

Après avoir cloné le projet :

Développement

⚠️ Avant de lancer le projet, vous devez installer gomplate

yarn # to install dependencies
yarn dev # to run in dev mode

Gestion des environnements

Les variables issues des docker build-args, sont à utiliser dans next.config.js, pour les autres, il faut les définir dans les différents .env.*.

Le fichier .env.staging est utilisé pour les environnements de review et de pré-production.

Le fichier .env.development est utilisé pour l'environnement de développement.

⚠️ Les variables d'environnement sont publiques (utilisées durant le build), ne commitez donc pas de variables privées dans ces fichiers.

Variables d'env

cf .env.development

en production, les secrets sont chiffrés dans GIT avec sealed-secrets.

branche Hasura

Lancer les serveurs Postgres, hasura et keycloak avec docker-compose up.

Hasura

Lancer les seeds :

yarn hasura seed apply --file books.sql --project ./hasura --database-name default --endpoint http://127.0.0.1:8082 --admin-secret myadminsecretkey

Mettre à jour les metadatas et migrations :

Lancer la console avec yarn hasura console --project ./hasura --endpoint http://127.0.0.1:8082 --admin-secret myadminsecretkey. Les modifs faites dans l'UI seront reportées dans les dossiers hasura/metadata et hasura/migrations

Cf migrations documentation

KeyCloak

Le template intègre Next-auth et KeyCloak 20 qui assure tous les workflows d'authentification.

Le realm par défaut est dans .kontinuous/files/realm-export.json. Pour générer realm utilisable par docker-compose à partir de celui-ci, utilisez yarn keycloak.

Le thème keycloak est basé sur le design-système de l'état, cf keycloak-dsfr.

FranceConnect

Cf https://partenaires.franceconnect.gouv.fr/fcp/fournisseur-service

Dans les URLs de callback définies sur le compte FranceConnect, utiliser https://[votre-hostname]/realms/app-realm/broker/franceconnect-particulier/endpoint et https://[votre-hostname]/realms/app-realm/broker/franceconnect-particulier/endpoint/logout_response.

Liens