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 (6.2%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
Basic Info
- Host: GitHub
- Owner: incubateur-ademe
- License: mit
- Language: TypeScript
- Default Branch: develop
- Homepage: https://impactco2.fr
- Size: 276 MB
Statistics
- Stars: 60
- Watchers: 0
- Forks: 16
- Open Issues: 66
- Releases: 14
Topics
Metadata Files
README.md
Impact CO₂
Application web sous Next.js permettant de comparer la consommation en CO₂e de divers équivalents.
Installation 💾
yarn pour installer l'application
yarn dev pour lancer un serveur de développement sur http://localhost:3000
yarn build pour build l'application
yarn start pour lancer un serveur de production
Déploiement 🚀
Le site est hébergé sur Scalingo via des serveurs en France. Aucune donnée ne transite en dehors de l’UE.
Développement ⚙️
yarn devlance le serveur web localyarn testa:locallance les tests de l'API en continu (avec Jest)yarn testu:locallance les tests unitaires en continu (avec Jest)yarn teste:locallance les tests de bout en bout ("end-to-end") en continu (avec Playwright)
Lors du premier lancement des tests end-to-end, une installation de Playwright peut être demandée.
Les tests end-to-end nécessitent que le serveur web local soit lancé.
Variable d'environnement
Il vous faut un fichier .env dont les valeurs sont documentées dans .env.dist
Couverture de test
Vous pouvez calculer la couverture de test sur votre machine locale.
Si vous n'avez jamais lancé de tests e2e avant, vous devrez installez Playwright en local avec yarn install playwright.
Assurez-vous d'avoir les bonnes variables d'environnement dans le fichier .env, puis installez les dépendances avec la commande yarn, puis lancez le serveur local avec yarn dev.
Ouvrez un autre terminal et lancez les commandes suivantes dans l'ordre :
1 - yarn cov:clean : Supprime le répertoire "coverage" pour partir d'un état propre.
2 - yarn cov:pw : Lance les tests Playwright avec la couverture. Le répertoire "coverage" est alors créé, et contient des fichiers de couverture au format JSON.
3 - yarn cov:jest : Lance les tests Jest, couverture incluse. Le répertoire "coverage" s'enrichit du fichier de couverture des tests Jest, au format JSON.
4 - yarn cov:report : Merge tous les rapports JSON précédents, calcule la couverture finale, et créé un rapport facilement lisible. Le répertoire coverage/summary est alors créé, le fichier index.html contenant le rapport final.
5 - yarn cov:show : Affiche dans votre navigateur le rapport de couverture final (sous coverage/summary/index.html)
La commande yarn cov:full permet de réaliser toutes les étapes de 1 à 5 en une seule fois.
Workflow Git ⚙️
L’organisation du développement suit le workflow Gitflow :
- La branche de production est
main. Seuledeveloppeut être mergée directement dans main. - Les hotfix, comme les features (ou tout autre type de fonctionnalité) sont créés sur des branches dédiées issues de
develop. - Une fois que le code est revu par un pair, et la fonctionnalité recettée par le métier depuis la review app dédiée, il est possible de merger la branche dans
develop. - La branche du travail validé et recetté est donc
develop. Elle possède sa propre review app. Elle est visible ici. - Chaque mise en production consiste à merger
developdansmain.
Les commits sont conventionnés. Les types suivants sont acceptés :
builddocsfeatfixperfrefactorstyletestchore
Connexion à Agribalyse
Parfois les données sont extraites par API.
Parfois les données sont codées en dur.
Il y a un cas de figure entre les deux : un fichier batch se connecte à une API et modifie un fichier .json (qui sera considéré comme "en dur" par l'appli une fois lancée). C'est le cas d'Agribalyse.
Pour mettre à jour ce fichier,
- lancer
yarn build:fruitpour les fruits et légumes, - lancer
yarn build:boissonpour les boissons.
Architecture 🏛️
Le projet utilise React avec (entre autre) Nextjs et React Query. Le state est simplement géré par Context.
Le repo est architecturé avec les dossiers suivants :
pagesavec l'ensemble des pages du site.testucontient les tests unitaires (au sens strict, c'est-à-dire les tests d'une fonction)testacontient les tests de l'API (toutes les fonction sous le répertoire /api)testccontient les tests de composants fronttestecontient les tests end-to-endsrcavec tout le reste du code.componentsavec l'ensemble des composantsbaseavec les composants simple réutilisés partout (un peu comme les atomes pour l'atomic design)chartsavec les différents graphique utilisés sur le sitelayoutavec les composants de structure globale (header,footer, etc.)miscavec les composants qui ne rentrent pas dans les autres dossiermodalsavec les différentes modals utilisées sur le site (elles sont déclaré sur le site site via leur provider)providers(qui pourrait être renommécontext) avec les contexts et leur provider (dans le même fichier, ce sont les seuls composants qui ont deux exports)screenshotavec tous les composants spécifiques à la prise de screenshots (boutons, signature, etc.)viewsavec les composants spécifiques à une page[categorie]certains dossiers portent le nom d’une catégorie. Ils contiennent tous l’affichage et la logique spécifique à cette catégorie (et ses équivalents). Ce qui inclue composants et context/provider. Seules les modals restent centralisées dans le dossiermodalsdataavec l'ensemble des données locales importées au buildhooksavec ...les hooksutilsavec quelques fonctions et les bases du css
Les composants (en dehors des providers et des modals) sont regroupés par feature. Chaque composant enfant est dans un dossier du nom du composant parent, à la racine du composant parent. Si un enfant à plusieurs parents, il migre dans le dossier misc. Si un groupe de composants dans le dossier misc devient suffisamment important pour mériter son propre dossier, il migre à la racine du dossier components, dans un dossier au nom approprié.
Chaque fichier de composant (sauf les providers) n'a qu'un seul export : le composant. L'intérieur de ce fichier est structuré comme suit :
- Import de librairie externes (React, Styled Components, etc.)
- Import de librairie interne (d'autres composants que l'on a créé)
- Déclaration et export du composant
Les fonctions appelées dans le jsx ne sont pas nommées, afin de simplifier la lecture. On essaie de maintenir les fichiers de composants bien en dessous de 100 lignes
Les iframes
Le contenu peut être intégré par nos utilisateurs directement dans leur propre site web grâce aux iframes.
Le contenu des iframes est disponible dans le code dans le répertoire pages/iframes.
Ce contenu est donc disponible en ligne à l'URL /iframes/... comme par exemple l'habillement ou la livraison.
Mais ces pages ne sont pas faites pour être lues "telles quelles" dans notre site, mais pour être intégrées dans un autre site.
Ces pages deviennent disponibles à nos utilisateurs grâce à un script qui construit une iframe et l'insère dans le DOM de leur site web.
le script est generé via :
- iframe/index.js
Ce script est minifié, renommé et placé dans le répertoire /public à chaque build du projet NextJS, grâce au fichier webpack.config.js. Ainsi,
- iframe/index.js devient accessible publiquement sous l'URL /iframe.js,
Les utilisateurs qui veulent cette iframe dans leur projet n'ont plus qu'à copier/coller le code suivant dans la page web de leur choix (exemple pour la livraison) :
html
<script
name="impact-co2"
src="https://impactco2.fr/iframe.js"
data-type="livraison"
data-search="?theme=default"></script>
Les attributs "data" permettant de paramétrer cette iframe.
API
Une API du site est actuellement disponible, sa documentation publique est en cours de construction.
Toutefois, pour les développeurs, afin de comprendre son utilisation et les retours attendus, le répertoire testa regroupe les tests automatisés concernant l'API uniquement.
Owner
- Name: Accélérateur de la Transition Écologique (ADEME)
- Login: incubateur-ademe
- Kind: organization
- Email: contact@incubateur-ademe.beta.gouv.fr
- Location: France
- Website: incubateur-ademe.beta.gouv.fr
- Repositories: 53
- Profile: https://github.com/incubateur-ademe
Incubateur interne de l'ADEME
GitHub Events
Total
- Issues event: 4
- Watch event: 8
- Delete event: 50
- Issue comment event: 8
- Push event: 523
- Pull request review comment event: 8
- Pull request review event: 12
- Pull request event: 92
- Fork event: 3
- Create event: 48
Last Year
- Issues event: 4
- Watch event: 8
- Delete event: 50
- Issue comment event: 8
- Push event: 527
- Pull request review comment event: 8
- Pull request review event: 12
- Pull request event: 92
- Fork event: 3
- Create event: 48
Committers
Last synced: 6 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Florian | hi@f****m | 684 |
| Xavier Desoindre | x****e@h****r | 639 |
| David Boureau | b****z@u****m | 45 |
| David Boureau | b****z@g****m | 30 |
| Martin Régner | 4****r@u****m | 29 |
| Clement AUGER | c****r@h****r | 17 |
| Clem-mrtn | 7****n@u****m | 3 |
| Antoine Augusti | a****i@b****r | 2 |
| Emile Rolley | e****y@t****o | 1 |
| Emile Rolley ⏚ | 4****y@u****m | 1 |
| Eric Boucher | e****r@g****m | 1 |
| Florian Panchout | f****n@F****l | 1 |
| Lilian Saget-Lethias | l****s@g****m | 1 |
| Lucas SAUDON | l****n@g****m | 1 |
| Léni | l****r@g****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 93
- Total pull requests: 411
- Average time to close issues: about 2 months
- Average time to close pull requests: 6 days
- Total issue authors: 15
- Total pull request authors: 9
- Average comments per issue: 2.66
- Average comments per pull request: 0.05
- Merged pull requests: 359
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 6
- Pull requests: 146
- Average time to close issues: 2 months
- Average time to close pull requests: 9 days
- Issue authors: 6
- Pull request authors: 2
- Average comments per issue: 0.17
- Average comments per pull request: 0.0
- Merged pull requests: 118
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- martinregner (29)
- florianpanchout (27)
- Clem-mrtn (17)
- laem (5)
- guillett (3)
- Dreadaxe (2)
- Clemog (2)
- iamvdo (1)
- PaulLadyman (1)
- SamuelAllain (1)
- sbernard31 (1)
- Flaburgan (1)
- jbledevehat (1)
- FlorianMrn (1)
- bdavidxyz (1)
Pull Request Authors
- desoindx (374)
- bdavidxyz (15)
- martinregner (13)
- lsaudon (2)
- anais0210 (2)
- ericboucher (2)
- AntoineAugusti (1)
- Clem-mrtn (1)
- florianpanchout (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 3
-
Total downloads:
- npm 224 last-month
-
Total dependent packages: 0
(may contain duplicates) -
Total dependent repositories: 0
(may contain duplicates) - Total versions: 139
- Total maintainers: 5
proxy.golang.org: github.com/incubateur-ademe/impactco2
- Documentation: https://pkg.go.dev/github.com/incubateur-ademe/impactco2#section-documentation
- License: mit
-
Latest release: v1.24.2
published over 2 years ago
Rankings
npmjs.org: @incubateur-ademe/impactco2-react
Integrer les ressources d'Impact CO₂
- Homepage: https://impactco2.fr
- License: MIT
-
Latest release: 1.7.0
published 6 months ago
Rankings
Maintainers (5)
npmjs.org: impactco2-react
Integrer les ressources d'Impact CO2
- Homepage: https://impactco2.fr
- License: MIT
- Status: deprecated
-
Latest release: 0.1.1
published almost 2 years ago
Rankings
Maintainers (1)
Dependencies
- gatsby-cli ^4.13.0 development
- gatsby-plugin-root-import ^2.0.5 development
- gatsby-plugin-webpack-bundle-analyser-v2 ^1.1.27 development
- prettier ^2.7.1 development
- webpack ^5.72.0 development
- webpack-cli ^4.4.0 development
- @dnd-kit/core ^6.0.5
- @dnd-kit/sortable ^7.0.1
- animated-number-react ^0.1.2
- axios ^0.27.2
- babel-plugin-styled-components ^2.0.7
- chrome-aws-lambda ^10.1.0
- copy-to-clipboard ^3.3.1
- fuse.js ^6.5.3
- gatsby ^4.13.1
- gatsby-plugin-env-variables ^2.2.0
- gatsby-plugin-image ^2.16.1
- gatsby-plugin-manifest ^4.13.0
- gatsby-plugin-matomo ^0.13.0
- gatsby-plugin-offline ^5.13.0
- gatsby-plugin-preact ^6.13.0
- gatsby-plugin-react-helmet ^5.13.0
- gatsby-plugin-sharp ^4.16.1
- gatsby-plugin-sitemap ^5.13.0
- gatsby-plugin-styled-components ^5.13.0
- gatsby-plugin-web-font-loader ^1.0.4
- gatsby-source-filesystem ^4.16.0
- html-to-image ^1.9.0
- iframe-resizer ^4.3.1
- iframe-resizer-react ^1.1.0
- preact ^10.8.1
- preact-render-to-string ^5.2.0
- puppeteer ^13.0.1
- puppeteer-core ^13.0.1
- query-string ^7.0.1
- react ^18.2.0
- react-dom ^18.2.0
- react-flip-toolkit ^7.0.14
- react-helmet ^6.1.0
- react-query ^3.38.0
- react-scripts 5.0.1
- react-share ^4.4.0
- react-slick ^0.29.0
- react-switch ^7.0.0
- react-tooltip ^4.2.17
- react-use-query-param-string ^2.0.3
- recharts ^2.1.9
- styled-components ^5.3.5
- styled-normalize ^8.0.7
- twemoji ^14.0.2
- 2040 dependencies
- actions/checkout v3 composite
- actions/setup-node v3 composite
- actions/upload-artifact v3 composite