Skip to content
This repository was archived by the owner on Apr 5, 2024. It is now read-only.

SocialGouv/template

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f52ee2f · Jan 16, 2024
Jan 16, 2024
Nov 9, 2022
Sep 5, 2023
Jan 16, 2024
Jan 16, 2024
Jan 31, 2023
Jan 31, 2023
Jul 29, 2023
Aug 14, 2023
Aug 14, 2023
Nov 9, 2022
Mar 4, 2022
Mar 4, 2022
Mar 18, 2022
Jan 16, 2024
Jan 16, 2024
Jan 16, 2024
Mar 28, 2022
Jan 16, 2024
Jan 16, 2024
Jul 24, 2023
Jan 16, 2024
Apr 24, 2023
Nov 7, 2023
Jan 31, 2023
Feb 11, 2022
Jul 24, 2023
Jul 24, 2023
Jan 28, 2022
Jul 29, 2023
Jan 16, 2024
Oct 5, 2023
Oct 10, 2023
Jan 31, 2023
Jan 16, 2024

Repository files navigation

template

GitHub last commit (branch) GitHub Workflow Status (with event) Libraries.io dependency status for GitHub repo

Template minimal de la Fabrique des ministères sociaux qui intègre nos recommandations tech. Une présentation complète est visible ici.

⚠️ Le Système de Design de l'État s'adresse uniquement aux développeurs et aux concepteurs, qu'ils soient agents publics ou prestataires pour des sites Internet de l'État (Ministères, Administrations centrales, Préfectures, Ambassades, etc.). cf conditions d'utilisation.

Description

  • 🇫🇷 Basé sur codegouv/react-dsfr
  • ⚖️ Pages de "conformité" (CGU, RGPD, stats..)
  • 📦 Testing, lint, CI & release automatisés
  • 🔒 Image docker rootless, header CSP
  • 🔑 prévention de fuite de secrets avec talisman
  • 📊 Intégration de sentry & matomo
  • ⚡️ Basé sur Next et TypeScript

Dans le détail

D'un point de vue fonctionnel

  • 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 hasura :

  • 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

Cette branche propose des composants backends de référence.


Loading
graph LR
Browser{Browser}-->|JWT|Frontend[Frontend/API Next.js]
Browser-->KeyCloak
Frontend-->|JWT|Hasura
KeyCloak-->PG1[PostgreSQL]
KeyCloak-->|JWT|Browser
Hasura-->|RBAC|PG2[PostgreSQL]
KeyCloak-->FranceConnect

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 de sill-web.

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.

Déploiement sur kubernetes

Template utilise kontinuous pour définir et déployer ses ressources kubernetes.

Lancer npx kontinuous build --env dev -o pour obtenir les manifests de votre environment (dev, preprod ou prod).

La version dev est déployée sur OVH.

Liens