ecobalyse
Accélerer la mise en place de l'affichage environnemental
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (4.4%) to scientific vocabulary
Keywords
Repository
Accélerer la mise en place de l'affichage environnemental
Basic Info
- Host: GitHub
- Owner: MTES-MCT
- License: mit
- Language: Elm
- Default Branch: master
- Homepage: https://ecobalyse.beta.gouv.fr
- Size: 107 MB
Statistics
- Stars: 36
- Watchers: 4
- Forks: 10
- Open Issues: 106
- Releases: 27
Topics
Metadata Files
README.md
Ecobalyse 
Accélerer la mise en place de l'affichage environnemental
L'application est accessible à cette adresse.
Note: le projet Ecobalyse s'appellait initialement Wikicarbone.
Socle technique et prérequis
Le frontend de cette application est écrite en Elm. Vous devez disposer d'un environnement NodeJS 14+ et npm. Pour le backend vous devez disposer d'un environnement python >=3.11, pipenv et gettext sur votre machine. Certains fichiers d’impacts détaillés nécessitent de configurer transcrypt pour les lire en local.
Configuration
Les variables d'environnement suivantes doivent être définies :
BACKEND_ADMINS: la liste des emails des administrateurs initiaux, séparés par une virguleDEFAULT_FROM_EMAIL: l'email utilisé comme origine pour les mails liés à l'authentification (par défaut ecobalyse@beta.gouv.fr)DJANGO_DEBUG: la valeur du mode DEBUG de Django (par défautTrue)DJANGO_SECRET_KEY: la clé secrète de DjangoEMAIL_SERVER_HOST: serveur SMTP (localhostpermet de bénéficier d'une instance maildev)EMAIL_SERVER_PASSWORD: le mot de passe du serveur SMTPEMAIL_SERVER_PORT: Port su serveur SMTP (1025permet de bénéficier d'une instance maildev)EMAIL_SERVER_USER: Nom d'utilisateur SMTPEMAIL_SERVER_USE_TLS: Utilisation de TLS (par defaut àTrue, positionner àFalsepour utiliser l'instance maildev)ENABLE_FOOD_SECTION: affichage ou non de la section expérimentale dédiée à l'alimentaire (valeurTrueouFalse, par défaultFalse)ENABLE_OBJECTS_SECTION: affichage ou non de la section expérimentale dédiée aux objets génériques (valeurTrueouFalse, par défaultFalse)ENABLE_VELI_SECTION: affichage ou non de la section expérimentale dédiée aux véhicules intermédiaires (valeurTrueouFalse, par défaultFalse)MATOMO_HOST: le domaine de l'instance Matomo permettant le suivi d'audience du produit (typiquementstats.beta.gouv.fr).MATOMO_SITE_ID: l'identifiant du site Ecobalyse sur l'instance Matomo permettant le suivi d'audience du produit.MATOMO_TOKEN: le token Matomo permettant le suivi d'audience du produit.NODE_ENV: l'environnement d'exécution nodejs (par défaut,development)POSTHOG_HOST: l'URL racine du serveur Posthog (optionnel)POSTHOG_KEY: la clé Posthog pour la mesure d'audience (optionnel)RATELIMIT_MAX_RPM: le nombre de requêtes maximum par minute et par ip (par défaut: 5000)RATELIMIT_WHITELIST: liste des adresses IP non soumises au rate-limiting, séparées par des virgulesSCALINGO_POSTGRESQL_URL: l'uri pour accéder à Postgresl (définie automatiquement par Scalingo). Si non défini sqlite3 est utilisé.SECRET_KEY: le secret 32bits pour le backend; vous pouvez en générer une avecopenssl rand -hex 32SENTRY_DSN: le DSN Sentry à utiliser pour les rapports d'erreur.TRANSCRYPT_KEY: la clé utilisée et autogénérée par transcrypt et disponible dans https://vaultwarden.incubateur.net.ENCRYPTION_KEY: la clé utilisée par les scriptsnpm run encryptetnpm run decryptpour chiffrer/déchiffrer les fichiers d’impacts détaillés inclus dans chaque archive de release. Pour générer une nouvelle clé, vous pouvez utiliser le scriptbin/generate-crypto-key.VERSION_POLL_SECONDS: The number of seconds between two http polls to retrieve the current app version (/version.json, défault:300)
En développement, copiez le fichier .env.sample, renommez-le .env, et mettez à jour les valeurs qu'il contient ; le serveur de développement node chargera les variables en conséquences.
Pour utiliser le PostgreSQL lancé avec docker, configurez la variable SCALINGO_POSTGRESQL_URL comme ceci :
SCALINGO_POSTGRESQL_URL=postgres://postgres:password@localhost:5433/ecobalyse_dev
Note: docker est également une dépendance requise pour lancer la suite de tests (npm test).
Installation
Frontend
$ NODE_ENV=development npm install
Backend
$ pipenv install -d
Assurez-vous d'avoir un PostgreSQL >=16 qui tourne localement si vous souhaitez vous rapprocher de l'environnement de production. À défaut, sqlite sera utilisé.
Pour créer et lancer un PostgreSQL sur le port 5433 en local en utilisant docker :
# Création du volume pour persister les données
docker volume create ecobalyse_postgres_data
# Lancement du docker postgres 16
docker run --name ecobalyse-postgres -e POSTGRES_PASSWORD=password -d -p 5433:5432 -v ecobalyse_postgres_data:/var/lib/postgresql/data postgres:16
# Création de la base de données ecobalyse_dev
docker exec -it ecobalyse-postgres createdb -U postgres ecobalyse_dev
Vous devriez pouvoir y accéder via votre psql local avec la commande suivante :
psql -U postgres -p 5433 -h localhost ecobalyse_dev
Chargement des données par défaut
Pour initialiser la base de données (attention, toutes les données présentes, si il y en a, seront supprimées) :
$ pipenv run ./backend/update.sh
Développement
Environnement de développement local
Le serveur local de développement se lance au moyen des deux commandes suivantes :
$ npm start
Trois instances de développement sont alors accessibles :
- localhost:8002 sert le backend django utilisé pour l'authentification, et sert aussi les fichiers statiques de elm. Sert aussi l'admin django
- localhost:8001 sert l'API ;
- localhost:1234 est l'URL à utiliser en développement pour tester l'intégration des trois composants (le front, l'API et le Django) car un proxy Parcel renvoie certaines requêtes vers le port 8001 ou 8002 (voir
.proxyrc). Le frontend est servi en mode hot-reload, pour recharger! l'interface Web à chaque modification du code frontend.
ℹ️ Pour accéder à l'admin django, utilisez l'email
foo@bar.baz. Le lien d'activation pour se connecter automatiquement à l'admin sera affiché dans votre terminal.
Hooks Git avec pre-commit et Formatage de Code avec Prettier et Ruff
Ce projet utilise https://pre-commit.com/ pour gérer les hooks Git ainsi que Prettier et Ruff pour le formatage automatique du code. Le build sur le CI échouera si les fichiers python, javascript et json ne sont pas proprement formattés.
Vérification Automatique avant chaque Commit
Pour installer les hooks pre-commit, exécutez la commande suivante :
$ pipenv run pre-commit install
Un hook de pre-commit sera alors configuré pour vérifier que le code est bien formaté avant de permettre le commit. Le hook corrigera les erreurs dans la mesure du possible. Il vous suffira alors d'ajouter les modifications à votre staging, git puis à refaire votre commit.
Il est possible de lancer la vérification du formatage à la main grâce à la commande suivante :
$ npm run lint:all
Si vous voulez lancer la correction automatique de tous les problèmes détectés, lancez :
$ npm run fix:all
Si vous ne souhaitez pas que la vérification se fasse de manière automatique, vous pouvez désinstaller pre-commit et les hooks associés :
$ pipenv run pre-commit uninstall
Débogage des emails
Une instance maildev est lancé en même temps que le serveur de développement, elle est accessible à l'adresse http://localhost:1081.
Compilation
Pour compiler la partie client de l'application :
$ npm run build
Les fichiers sont alors générés dans le répertoire build à la racine du projet, qui peut être servi de façon statique.
Déploiement
L'application est déployée automatiquement sur la plateforme Scalingo à chaque mise à jour de la branche master sur le dépôt.
Chaque Pull Request effectuée sur le dépôt est également automatiquement déployée sur une instance de revue spécifique, par exemple https://ecobalyse-pr44.osc-fr1.scalingo.io/ pour la pull request #44. Ces instances de recette restent actives 72 heures, puis sont automatiquement décommisionnées passé ce délai ou si la pull request correspondante est mergée.
Ajout d'une variable d'environnement
Pour ajouter une variable d'environnement sur une application, il est recommandé d'utiliser le CLI scalingo qui permet d'ajouter des valeurs qui contiennent plusieurs lignes (à la différence de l'interface graphique qui ne le permet pas) :
scalingo --app ecobalyse env-set "MY_VAR=$(cat fichier.key)"
Fichiers d’impacts détaillés
Les fichiers d’impacts détaillés sont chiffrés à l’aide de transcrypt sur le dépôt public Github. En revanche, la version locale est une version décryptée par transcrypt. Vous pouvez donc utiliser, localement, les commandes git habituelles pour voir les différences dans ces fichiers, par exemple :
git diff master HEAD public/data/textile/processes_impacts.json
Des commandes supplémentaires sont disponibles pour chiffrer et déchiffrer les fichiers manuellement au besoin (débogage par exemple). Notez que ces commandes requièrent la présence de la variable d’environnement ENCRYPTION_KEY pour fonctionner correctement :
npm run encrypt public/data/textile/processes_impacts.json dist/processes_impacts_textile.json.enc
npm run decrypt dist/processes_impacts.json.enc dist/processes_impacts_textile.json
Points d'attention
Lors du merge d'une PR, il est important de merger d'abord la PR correspondante sur ecobalyse-private, puis celle sur ecobalyse.
Serveur de production
Variables d'environnement
Les variables d'environnement doivent être positionnées via l'interface de configuration Scalingo (voir la section Configuration).
Lancement du serveur
Pour lancer le serveur applicatif complet (frontend + backend), par exemple depuis un environnement de production, la démarche est la suivante :
$ npm run build
$ npm run server:start
L'application est alors servie sur le port 1234.
Ecobalyse data
Le dépôt ecobalyse-data contient les scripts (principalement Python) utilisés pour importer et exporter les données du projet Ecobalyse.
Versioning
Le versioning de l'application permet de revenir à des anciennes versions d'Ecobalyse. Pour que ce versioning puisse fonctionner, les anciennes versions (<= 2.0.0) doivent être patchées rétroactivement. Le script ./bin/build-specific-app-version.sh permet de générer une version spécifique de l'application et d'appliquer les patchs si nécessaire. Par exemple, pour générer la version 1.3.2 (le deuxième paramètre est le commit du répertoire https://github.com/MTE-extended/ecobalyse-private associé à cette version, si applicable) :
pipenv run ./bin/build-specific-app-version.sh v1.3.2 3531c73f23a1eb6f1fc6b9c256a5344742230fcf
Un fichier v1.3.2-dist.tar.gz sera disponible à la racine du projet et un répertoire v1.3.2 aura été créé dans versions/.
Le script python permettant de patcher les fichiers est disponible ici : ./bin/patch_files_for_versions_compat.py.
Toutes les versions disponibles dans les releases Github ont été patchées comme il se doit.
Owner
- Name: Ministère de la Transition écologique et de la Cohésion des territoires et Ministère de la Transition énergétique
- Login: MTES-MCT
- Kind: organization
- Location: France
- Website: https://ecologie.gouv.fr/
- Repositories: 100
- Profile: https://github.com/MTES-MCT
Fabrique numérique
GitHub Events
Total
- Fork event: 1
- Create event: 267
- Commit comment event: 1
- Issues event: 208
- Release event: 14
- Watch event: 6
- Delete event: 252
- Member event: 6
- Issue comment event: 217
- Push event: 1,805
- Pull request review event: 418
- Pull request review comment event: 216
- Pull request event: 511
Last Year
- Fork event: 1
- Create event: 267
- Commit comment event: 1
- Issues event: 208
- Release event: 14
- Watch event: 6
- Delete event: 252
- Member event: 6
- Issue comment event: 217
- Push event: 1,805
- Pull request review event: 418
- Pull request review comment event: 216
- Pull request event: 511
Committers
Last synced: 6 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Nicolas Perriault | n****s@p****t | 1,096 |
| Christophe Combelles | c****b@f****r | 328 |
| Mathieu Agopian | m****u@a****o | 226 |
| paulboosz | p****z@g****m | 107 |
| Vincent Jousse | v****t@j****g | 80 |
| github-actions[bot] | 4****]@u****m | 26 |
| Tristan Robert | t****4@g****m | 16 |
| dependabot[bot] | 4****]@u****m | 13 |
| Ingredient editor | e****e@b****r | 3 |
| Alban Fournier | a****x@g****m | 2 |
| Emile Rolley ⏚ | 4****y@u****m | 1 |
| Julien Bouquillon | j****n@b****m | 1 |
| Nicolas Dubois | n****s@g****m | 1 |
| PascalDagras | 9****s@u****m | 1 |
| cerve | c****e@g****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 188
- Total pull requests: 1,417
- Average time to close issues: 17 days
- Average time to close pull requests: 8 days
- Total issue authors: 10
- Total pull request authors: 12
- Average comments per issue: 0.34
- Average comments per pull request: 0.52
- Merged pull requests: 1,021
- Bot issues: 0
- Bot pull requests: 102
Past Year
- Issues: 184
- Pull requests: 689
- Average time to close issues: 18 days
- Average time to close pull requests: 7 days
- Issue authors: 9
- Pull request authors: 9
- Average comments per issue: 0.32
- Average comments per pull request: 0.51
- Merged pull requests: 447
- Bot issues: 0
- Bot pull requests: 62
Top Authors
Issue Authors
- camcoq-start (132)
- n1k0 (20)
- vjousse (14)
- paulboosz (11)
- pgredigui (4)
- ccomb (3)
- desoindx (1)
- CodeByNico (1)
- antoineverger1 (1)
- guillaume-vizier-holis (1)
Pull Request Authors
- n1k0 (511)
- ccomb (292)
- paulboosz (188)
- vjousse (155)
- magopian (85)
- tristanrobert (74)
- github-actions[bot] (53)
- dependabot[bot] (49)
- albanfournier (4)
- wo0dyn (2)
- revolunet (2)
- EmileRolley (2)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 2
- Total downloads: unknown
-
Total dependent packages: 0
(may contain duplicates) -
Total dependent repositories: 0
(may contain duplicates) - Total versions: 54
proxy.golang.org: github.com/mtes-mct/ecobalyse
- Documentation: https://pkg.go.dev/github.com/mtes-mct/ecobalyse#section-documentation
- License: mit
-
Latest release: v7.1.0+incompatible
published 6 months ago
Rankings
proxy.golang.org: github.com/MTES-MCT/ecobalyse
- Documentation: https://pkg.go.dev/github.com/MTES-MCT/ecobalyse#section-documentation
- License: mit
-
Latest release: v7.1.0+incompatible
published 6 months ago
Rankings
Dependencies
- actions/checkout v2 composite
- github/codeql-action/analyze v1 composite
- github/codeql-action/autobuild v1 composite
- github/codeql-action/init v1 composite
- actions/cache v2 composite
- actions/checkout v2 composite
- actions/setup-node v2 composite
- 718 dependencies
- concurrently ^7.6.0 development
- elm-format ^0.8.5 development
- elm-review ^2.8.5 development
- elm-test 0.19.1-revision11 development
- jest ^29.3.1 development
- nodemon ^2.0.20 development
- process ^0.11.10 development
- rimraf ^4.0.4 development
- supertest ^6.3.3 development
- @parcel/transformer-elm ^2.8.1
- @parcel/transformer-image ^2.8.1
- @parcel/transformer-sass ^2.8.1
- @sentry/browser ^7.26.0
- @sentry/node ^7.26.0
- @sentry/tracing ^7.26.0
- bootstrap ^5.2.3
- cors ^2.8.5
- elm ^0.19.1-5
- express ^4.18.2
- helmet ^6.0.1
- highcharts ^10.3.2
- js-yaml ^4.1.0
- parcel ^2.8.1
- piwik ^1.0.9
- rapidoc ^9.3.3
- jupyter/minimal-notebook notebook-6.5.4 build
- IPython >=8.14,<8.15
- fjson >=0.1,<0.2
- flatdict >=4.0,<4.1
- ipywidgets >=8.0,<8.1
- matplotlib >=3.7,<3.8
- numpy >=1.25,<1.26
- olca-ipc ==0.0.12
- pandas >=2.0,<2.1
- scipy >=1.11,<1.12
- xlrd >=2.0,<2.1