Le site officiel de france-chaleur-urbaine.beta.gouv.fr
Ce dépôt regroupe le code relatif au site france-chaleur-urbaine.beta.gouv.fr.
Il utilise, entre autre, Docker, React, Next.js, PostgreSQL et MapLibre.
Pré-requis :
- Node.js version 20
- pnpm
- Docker
- Posséder un compte Scalingo et avois accès aux applications FCU
- Récupérer le fichier
.env.localauprès d'un membre de l'équipe
- Installer les dépendances
pnpm i-
Déposer le fichier
.env.localà la racine du projet. -
Lancer les conteneurs Docker (services annexes + app next).
docker compose up -d- Installer la CLI Scalingo puis s'authentifier (servira à voir les logs et créer des tunnels vers les bases de données prod et dev)
scalingo login- Préparer la structure de la BDD
pnpm db:migrate- Peupler la base de données locale à partir de la base de production, notamment les tables de référence et calculées.
pnpm db:bootstrap- Si jamais l'étape de bootstrap est trop lente, essayer de récupérer un dump depuis le dashboard Scalingo et l'importer en local (~ 20-30 minutes)
tar -xzvf 20240XXXXXXXXXX_france_chal_3098.tar.gz
pg_restore --clean --if-exists --no-owner --no-privileges --verbose --no-comments --dbname postgres://postgres:postgres_fcu@localhost:5432/postgres 20240XXXXXXXXXX_france_chal_3098.pgsql- Désormais, sont accessibles :
- Le site internet : http://localhost:3000/
- L'interface mailpit pour les emails : http://localhost:8025/
- La base de données PostgreSQL : localhost:5432
Une partie des données est stockées dans Airtable, l'email/mot de passe est partagé, à récupérer auprès d'un membre de l'équipe.
- Copier la base de données
FCU ProdversFCU Dev <ton prenom>(Cocher uniquementDuplicate records) - Récupérer les API Keys et les modifier dans le fichier
.env.local
Certaines requêtes à la base de données sont générées par Kysely à partir du fichier src/server/db/kysely/database.ts.
Celui-ci doit être généré à partir de la base de données à chaque fois que celle-ci est modifiée.
pnpm db:verifypour voir si des modifications ont été faites à la base de données sans avoir été incluses dans le fichiersrc/db/kysely/database.tspnpm db:syncpour générer le fichiersrc/db/kysely/database.tsà partir de la base de données
Les commandes ci-dessous sont à réaliser une fois pour lier la dépendance @betagouv/france-chaleur-urbaine-publicodes directement au répertoire local france-chaleur-urbaine-publicodes pour faciliter le développement sans avoir besoin de publier une version sur le registre NPM.
# rend disponible le paquet @betagouv/france-chaleur-urbaine-publicodes globalement en local
(cd france-chaleur-urbaine-publicodes && pnpm link)
# utilise le paquet local @betagouv/france-chaleur-urbaine-publicodes plutôt que celui du registre
(cd france-chaleur-urbaine && pnpm link @betagouv/france-chaleur-urbaine-publicodes)Note : Le lien créé est un lien symbolique, il ne fonctionne pas quand le serveur est lancé dans un conteneur Docker. Il faut donc lancer le serveur en dehors du conteneur Docker.
# arrêter le conteneur du serveur
docker compose stop web
# corriger les permissions (root dans le conteneur != de l'utilisateur local)
sudo chown -R $USER: .next node_modules
# lancer le serveur
pnpm dev- Biome est utilisé comme formatteur de code et linter.
pnpm lintVitest est le framework utilisé pour les tests unitaires.
pnpm testpnpm buildUn hook pre-commit Git permet de vérifier que le code est correctement linté avec lint-staged, et talisman est un outil qui permet de détecter les fuites de secrets dans les commits. À noter que GitGuardian est configuré sur l'organisation beta.gouv et fait la même chose, mais le secret a alors été rendu public et il faut alors l'invalider.
Si talisman détecte une erreur au moment d'un commit, 2 options sont possibles :
- soit corriger l'erreur pour supprimer l'alerte ;
- soit ajouter une exception via la commande
pnpm talisman:add-exception.
Le code de ce logiciel est soumis à la licence Etalab 2.0.