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 authentificationhasura
qui ajoute un serveur Next.js, hasura et une authentification KeyCloak
Ce template intègre les recommendations de la documentation technique SocialGouv
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
- Page d'authentification
- Page d'inscription
- Page profil
- Interactions avec la base de données
-
storybook permettant de réaliser des stories pour les composants
-
@testing-library pour tester de manière unitaire les composants
-
jest pour tester de manière unitaire le code
-
cypress pour tester en e2e le frontend
-
talisman qui permet de prévenir la publication de secrets dans votre code
-
un Dockerfile rootless de production basé sur nginx
-
Côté Next.js:
- intégration de @codegouvfr/react-dsfr pour le design système de l'état
- intégration de sentry pour gérer les erreurs
- intégration de matomo pour les statistiques d'utilisation
- 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)
Après avoir cloné le projet :
gomplate
yarn # to install dependencies
yarn dev # to run in dev mode
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.
cf .env.development
en production, les secrets sont chiffrés dans GIT avec sealed-secrets.
Lancer les serveurs Postgres, hasura et keycloak avec docker-compose up
.
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
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.
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
.
- https://template.fabrique.social.gouv.fr/ : Version en production du projet
- https://socialgouv.github.io/template/ : Storybook liés à la branche principale du projet
- https://github.com/socialgouv/keycloak-dsfr : Thème keycloak-DSFR
- https://socialgouv.github.io/support : Documentation technique SocialGouv