ecobalyse
Ecobalyse makes it possible to understand and calculate the ecological impacts of the products distributed in France.
https://github.com/mtes-mct/ecobalyse
Category: Industrial Ecology
Sub Category: Life Cycle Assessment
Keywords
carbon-emissions carbon-footprint environment environmental-footprint simulation
Keywords from Contributors
climate
Last synced: about 23 hours ago
JSON representation
Repository metadata
Accélerer la mise en place de l'affichage environnemental
- Host: GitHub
- URL: https://github.com/mtes-mct/ecobalyse
- Owner: MTES-MCT
- License: mit
- Created: 2021-08-18T15:18:29.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2026-03-19T16:16:03.000Z (23 days ago)
- Last Synced: 2026-03-20T07:16:58.164Z (22 days ago)
- Topics: carbon-emissions, carbon-footprint, environment, environmental-footprint, simulation
- Language: Elm
- Homepage: https://ecobalyse.beta.gouv.fr
- Size: 174 MB
- Stars: 45
- Watchers: 3
- Forks: 13
- Open Issues: 186
- Releases: 34
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
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 écrit en Elm. Vous devez disposer d’un environnement NodeJS 22+ et npm. Pour le backend vous devez disposer d’un environnement python >=3.12, uv et gettext sur votre machine. Certains fichiers d’impacts détaillés nécessitent de configurer transcrypt pour les lire en local.
docker est également une dépendance requise pour lancer la suite de tests.
Configuration
Les variables d’environnement décrites ci-dessous doivent être définies. En développement, copiez le fichier .env.sample, renommez-le .env, et mettez à jour les valeurs qu’il contient ; le serveur de développement chargera les variables en conséquences.
Variables partagées
SENTRY_DSN: le DSN Sentry à utiliser pour les rapports d’erreur front et back
Frontend (npm & node)
ENABLE_FOOD_SECTION: affichage ou non de la section dédiée à l’alimentaire (valeurTrueouFalse, par défautFalse)ENABLE_OBJECTS_SECTION: affichage ou non de la section expérimentale dédiée aux objets génériques (valeurTrueouFalse, par défautFalseENABLE_VELI_SECTION: affichage ou non de la section expérimentale dédiée aux véhicules intermédiaires (valeurTrueouFalse, par défautFalse)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-keyMATOMO_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 produitMATOMO_TOKEN: le token Matomo permettant le suivi d’audience du produitNODE_ENV: l’environnement d’exécutionnodejs(par défaut,development)PLAUSIBLE_HOST: le domaine du serveur Plausible (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 virgulesSECRET_KEY: le secret 32bits pour le backend ; vous pouvez en générer une avecopenssl rand -hex 32TRANSCRYPT_KEY: la clé utilisée et autogénérée par transcrypt et disponible dans https://vaultwarden.incubateur.netVERSION_POLL_SECONDS: le nombre de secondes entre deux appels HTTP pour récupérer la dernière version de l’application (/version.json, défaut:300)
Backend
-
DATABASE_URL: DSN de la base de donnéesPour utiliser un serveur PostgreSQL spécifique, configurez la variable
DATABASE_URLcomme ceci :DATABASE_URL=postgresql+asyncpg://<username>:<pw>@localhost:5432/<nom de la bdd>)Sinon, une base de données par défaut dans un conteneur Docker sera utilisée.
-
EMAIL_FROM: l’adresse email de l’expéditeur des emails du backend -
EMAIL_SERVER_HOST: serveur SMTP (localhostpermet de bénéficier d’une instance maildev) -
EMAIL_SERVER_PASSWORD: le mot de passe du serveur SMTP -
EMAIL_SERVER_PORT: numéro de port du serveur SMTP (1025permet de bénéficier d’une instance maildev) -
EMAIL_SERVER_USER: nom d’utilisateur SMTP -
EMAIL_SERVER_USE_TLS: utilisation de TLS (par defaut àTrue, positionner àFalsepour utiliser l’instance maildev)
Déploiement
BACKEND_ADMINS: la liste des emails, le prénome et le nom des administrateurs initiaux, utilisés pour charger les utilisateurs par défaut lors du déploiement Scalingo. Le format doit être de ce type :email1@test.com/Prénom1/Nom1,email2@test.com/Prénom2/Nom2.
Installation
Frontend
-
Installation des dépendances
npm ci --ignore-scripts -
Déchiffrage du fichier des impacts détaillés. Attention, la variable d’environnement
TRANSCRYPT_KEYdocumentée plus haut doit être renseignée et exportée auparavant.export TRANSCRYPT_KEY="<clé de déchiffrement>" ./bin/run-transcrypt.sh
Backend
-
Installation des dépendances
uv sync
Le framework utilisé est Litestar.
Environnement de développement local
Lancer le serveur de développement
Le serveur local de développement se lance au moyen des deux commandes suivantes :
npm start:dev
Trois instances de développement sont alors accessibles :
- localhost:8002 sert le backend Litestar utilisé pour l’authentification, et sert aussi les fichiers statiques de ELM.
- localhost:8001 sert l’API publique Ecobalyse.
- 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.json). Le frontend est servi en mode hot-reload, pour recharger l’interface Web à chaque modification du code frontend.
Migrer la base de données
uv run backend database upgrade --no-prompt
Réinitialiser la BDD et charger les données de fixtures
./bin/reset-docker-db.sh
Sans docker :
uv run backend database upgrade --no-prompt
uv run backend fixtures load-processes public/data/processes_impacts.json
uv run backend fixtures load-components public/data/object/components.json
Créer un super-utilisateur
uv run backend users create-user --email foo@bar.org --first-name Foo --last-name Bar --superuser
Utiliser la ligne de commandes backend
Obtenir la liste des commandes possibles
uv run backend --help
Afficher l’aide d’une commande spécifique
uv run backend users --help
Auto-hébergement avec Docker
Vous trouverez dans ./docker des scripts permettant d’héberger une version publiée d’Ecobalyse en local en utilisant docker. Vous pouvez éditez le Dockerfile pour spécifier la version que vous souhaitez lancer, puis la lancer en utilisant docker compose :
docker compose -f docker/compose.yaml up --build
Un server express sera lancé sur http://localhost:8001. À noter qu’actuellement, vous ne pouvez pas avoir accès aux impacts détailés de cette façon.
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 :
uv 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 :
uv 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 dist à 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
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.
Version statique et autonome
Vous pouvez générer une version statique de l’application en utilisant le script suivant :
BUILD_CURRENT_VERSION=1 ./bin/build-specific-app-version.sh name
Un fichier nommé name-dist.tar.gz sera créé contenant une version statique du site.
Owner metadata
- 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
- Email:
- Kind: organization
- Description: Fabrique numérique
- Website: https://ecologie.gouv.fr/
- Location: France
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/20193330?v=4
- Repositories: 100
- Last ynced at: 2023-03-02T02:25:18.968Z
- Profile URL: https://github.com/MTES-MCT
GitHub Events
Total
- Fork event: 1
- Create event: 282
- Commit comment event: 1
- Issues event: 233
- Release event: 15
- Watch event: 6
- Delete event: 262
- Member event: 8
- Issue comment event: 245
- Push event: 1885
- Pull request review event: 438
- Pull request review comment event: 223
- Pull request event: 546
Last Year
- Fork event: 1
- Create event: 282
- Commit comment event: 1
- Issues event: 233
- Release event: 15
- Watch event: 6
- Delete event: 262
- Member event: 8
- Issue comment event: 245
- Push event: 1885
- Pull request review event: 438
- Pull request review comment event: 223
- Pull request event: 546
Committers metadata
Last synced: 22 days ago
Total Commits: 2,098
Total Committers: 18
Avg Commits per committer: 116.556
Development Distribution Score (DDS): 0.447
Commits in past year: 350
Committers in past year: 11
Avg Commits per committer in past year: 31.818
Development Distribution Score (DDS) in past year: 0.574
| Name | Commits | |
|---|---|---|
| Nicolas Perriault | n****s@p****t | 1161 |
| Christophe Combelles | c****b@f****r | 340 |
| Mathieu Agopian | m****u@a****o | 226 |
| paulboosz | p****z@g****m | 142 |
| Vincent Jousse | v****t@j****g | 123 |
| github-actions[bot] | 4****] | 33 |
| Cedric Rossi | c****i@b****r | 25 |
| dependabot[bot] | 4****] | 17 |
| Tristan Robert | t****4@g****m | 16 |
| Ingredient editor | e****e@b****r | 3 |
| Alban Fournier | a****x@g****m | 3 |
| Nicolas Planchenault | 1****l | 2 |
| camcoq-start | 7****t | 2 |
| Emile Rolley ⏚ | 4****y | 1 |
| Julien Bouquillon | j****n@b****m | 1 |
| Nicolas Dubois | n****s@g****m | 1 |
| PascalDagras | 9****s | 1 |
| cerve | c****e@g****m | 1 |
Committer domains:
- beta.gouv.fr: 2
- bouquillon.com: 1
- jousse.org: 1
- agopian.info: 1
- free.fr: 1
- perriault.net: 1
Issue and Pull Request metadata
Last synced: 25 days ago
Total issues: 248
Total pull requests: 1,491
Average time to close issues: 28 days
Average time to close pull requests: 8 days
Total issue authors: 14
Total pull request authors: 15
Average comments per issue: 0.69
Average comments per pull request: 0.52
Merged pull request: 1,052
Bot issues: 0
Bot pull requests: 109
Past year issues: 236
Past year pull requests: 346
Past year average time to close issues: 30 days
Past year average time to close pull requests: 6 days
Past year issue authors: 11
Past year pull request authors: 12
Past year average comments per issue: 0.69
Past year average comments per pull request: 0.45
Past year merged pull request: 206
Past year bot issues: 0
Past year bot pull requests: 24
Top Issue Authors
- camcoq-start (167)
- n1k0 (24)
- vjousse (17)
- paulboosz (16)
- nicolaspkandeel (6)
- cedricr (4)
- ccomb (4)
- pgredigui (4)
- desoindx (1)
- CodeByNico (1)
- p-j (1)
- antoineverger1 (1)
- albanfournier (1)
- guillaume-vizier-holis (1)
Top Pull Request Authors
- n1k0 (525)
- ccomb (302)
- paulboosz (200)
- vjousse (171)
- magopian (85)
- tristanrobert (79)
- github-actions[bot] (58)
- dependabot[bot] (51)
- cedricr (8)
- albanfournier (4)
- wo0dyn (2)
- revolunet (2)
- EmileRolley (2)
- vitaxa (1)
- p-j (1)
Top Issue Labels
- product feature (35)
- data (30)
- backoffice (30)
- bug (20)
- objects (18)
- textile (16)
- tech-debt (14)
- api (14)
- vehicles (12)
- ui (10)
- enhancement (9)
- intra emergency (7)
- kpi (4)
- food (4)
- auth/sso (3)
- good first issue (2)
- veli (1)
Top Pull Request Labels
- dependencies (50)
- javascript (38)
- pending-release (36)
- automated (32)
- python (12)
- autorelease: pending (12)
- autorelease: tagged (10)
- automated pr (4)
- ui (4)
- data (2)
- tech-debt (2)
- intra emergency (1)
- food (1)
- api (1)
- auth/sso (1)
- backoffice (1)
- bug (1)
Package metadata
- Total packages: 2
- Total downloads: unknown
- Total dependent packages: 0 (may contain duplicates)
- Total dependent repositories: 0 (may contain duplicates)
- Total versions: 68
proxy.golang.org: github.com/MTES-MCT/ecobalyse
- Homepage:
- Documentation: https://pkg.go.dev/github.com/MTES-MCT/ecobalyse#section-documentation
- Licenses: mit
- Latest release: v8.5.0+incompatible (published 2 months ago)
- Last Synced: 2026-02-25T22:02:34.177Z (about 1 month ago)
- Versions: 34
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
proxy.golang.org: github.com/mtes-mct/ecobalyse
- Homepage:
- Documentation: https://pkg.go.dev/github.com/mtes-mct/ecobalyse#section-documentation
- Licenses: mit
- Latest release: v8.5.0+incompatible (published 2 months ago)
- Last Synced: 2026-02-25T22:02:33.971Z (about 1 month ago)
- Versions: 34
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
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
- ./.github/actions/create-release * composite
- ./.github/actions/transcrypt-cli * composite
- actions/checkout v4 composite
- actions/setup-node v4 composite
- actions/upload-artifact v4 composite
- ./.github/actions/create-release * composite
- ./.github/actions/transcrypt-cli * composite
- actions/checkout v4 composite
- actions/setup-node v4 composite
- orhun/git-cliff-action v4 composite
- softprops/action-gh-release v2 composite
- ./.github/actions/scalingo-cli * composite
- actions/checkout v4 composite
- actions/upload-artifact v4 composite
- astral-sh/setup-uv v4 composite
- shimataro/ssh-key-action v2 composite
- amannn/action-semantic-pull-request v5 composite
- node ${NODE_VERSION}-alpine build
- advanced-alchemy >=1.4.4
- aiosmtplib >=4.0.0
- aiosqlite >=0.21.0
- asyncpg >=0.30.0
- asyncstdlib >=3.13.1
- check-jsonschema >=0.32.1
- emails >=0.6
- litestar [jwt,sqlalchemy,standard]>=2.16.0
- msgspec >=0.19.0
- orjson >=3.10.16
- psycopg [binary,pool]>=3.2.6
- pwdlib [argon2]>=0.2.1
- pygithub >=2.6.1
- pytest-databases [postgres]>=0.12.0
- pytest-mock >=3.14.1
- python-stdnum >=2.1
- sentry-sdk [litestar]>=2.41
- structlog >=25.2.0
- typer >=0.16.0
- actions/checkout v4 composite
- ./.github/actions/scalingo-cli * composite
- ./.github/actions/transcrypt-cli * composite
- actions/cache v4 composite
- actions/checkout v4 composite
- actions/setup-node v4 composite
- astral-sh/setup-uv v4 composite
- shimataro/ssh-key-action v2 composite
- actions/checkout v4 composite
- orhun/git-cliff-action v4 composite
- peter-evans/create-pull-request v7 composite
- actions/cache v4 composite
- postgres 14
- 104 dependencies
Score: -Infinity