Projet Ecopass — Plateforme Next.js (en version beta) pour la déclaration et la gestion du coût environnemental des produits textiles.
- Node.js (>= 22)
- Docker (pour PostgreSQL et Maildev)
- PNPM
-
Cloner le dépôt
git clone [email protected]:incubateur-ademe/ecopass.git cd ecopass
-
Configurer les variables d'environnement
Copiez le fichier
.env.disten.envet adaptez les valeurssecretsi besoin :cp .env.dist .env
Pour correctement faire fonctionner le projet en local vous aurez besoin de specifier les secrets ProConnect (
PROCONNECT_CLIENT_ID,PROCONNECT_CLIENT_SECRETetNEXT_PUBLIC_PROCONNECT_DOMAIN, à recuperer depuis l'env preprod scalingo ou demander à un dev), la clé d'encryption Ecobalyse (ECOBALYSE_ENCRYPTION_KEY) et une clé INSEE (INSEE_API_KEY, disponible sur https://api.insee.fr/catalogue/site/themes/wso2/subthemes/insee/pages/item-info.jag?name=Sirene&version=V3.11&provider=insee). Vous pourrez enfin genererENCRYPTION_KEYetSTORAGE_ENCRYPTION_KEYavec la commandeopenssl rand -hex 32 -
Lancer les services Docker
docker compose up -d
Cela démarre :
- PostgreSQL (bases de données, une pour le dev, port 5432 et une pour les tests unitaires, port 5433)
- Maildev (serveur mail pour tests)
-
Installer les dépendances
pnpm install
-
Initialiser Prisma
Le projet utilise Prisma comme ORM. Les scripts suivants initialisent le schema de la base et ajoute des fixtures.
npx prisma generate npx prisma migrate deploy npx prisma db seed
-
Lancer le site
Pour lancer le site web vous pouvez utilisez :
pnpm dev
-
Générer les données ecobalyse
Pour calculer le coût environnemental des produits, on utilise une version en local d'Ecobalyse avec le
server-app.jsce dernier à besoin desprocesses_impacts.jsonpour fonctionner. Ils sont décryptés à partir deprocesses_impacts.json.encet de la variable d'environnementECOBALYSE_ENCRYPTION_KEY:pnpm ecobalyse:data
-
Lancer la queue
Pour processer les téléchargements de zip et les produits déposés sur la plateforme vous devez lancer la queue :
pnpm queue:watch
-
Tests unitaires
Les tests unitaires sont lancés avec Jest. La plupart des tests utilises des fonctions de mocks pour limiter leur scope. Les fonctions de db sont testés directement avec une vraie base.
npx jest
-
Tests e2e
Les tests e2e sont lancés avec playwright, attention de bien lancé au préalable le serveur web et la queue.
npx playwright test- S3
En production et preprod, les fichiers CSV envoyés sont encryptés puis stocké sur un S3 scaleway (variables d'environnement S3_ACCESS_KEY et S3_SECRET_KEY). En local il est recommandé de stocker les fichiers en local (variable d'environnement LOCAL_STORAGE=true, par defaut dans le .env.dist)
- Application : http://localhost:3000
- Maildev : http://localhost:1080
Beta — Merci de remonter tout bug ou suggestion via les issues du dépôt.
Note :
Ce projet utilise Next.js (App Router), Prisma, PostgreSQL, Maildev et des variables d'environnement pour la configuration.