README.md
July 10, 2024 Β· View on GitHub
π± NMF.earth app
Understand and reduce your carbon footprint

Repository for the NMF.earth React Native application, built with Expo, Redux Toolkit and Typescript. Design can be found on Figma.
π Data source
Carbon data comes from NMF's carbon footprint repo while barcode product scanned data comes from Open Food Facts api.
π¦ Getting started
Installing Dependencies:
$ yarn
Running the app:
$ yarn start
For starting the app on a specific OS:
$ yarn ios | yarn android
π©πΎβπ» Development
-
Eslint is used in the project to enforce code style and should be configured in your editor.
-
Prettier is also used and apply automatically by eslint
-
Typescript is used in the project for type-checking and should be configured in your editor.
You can check this manually by running:
$ yarn lint
or
$ yarn typescript
You can ask eslint to fix issues by running:
$ yarn lint:fix
π Testing
Use the following command to run unit tests with coverage:
$ yarn test
Use the following to update unit tests
$ yarn test -u
Use the following to run unit tests in watch mode while developing:
$ yarn test --watch
π¨ Storybook
Stories (*.story.tsx) can be automatically added to storyLoader.js with :
$ yarn prestorybook
π Sustainable guide
To place new .md files inside guides folder or modify existing guide and then run node scripts/generate-guides.js to generate a new sustainable guide. Images can be used in the .md as follow:  and should be place in assets/images/guide.
For methodology screen, just run node scripts/generate-methodology.js to update methodology.json from methodology.md.
For emission info screen, just run node scripts/generate-emission-info.js to update emission-info.json from assets/emission-info/markdown/*.md.
π£ Translations
You can help us with translate the app with our online tool POEditor. Any help is appreciate and no coding skills are needed π€
PS: please do not use send translations made by Google translate or similar.
Generate
Run node scripts/generate-translation-files.js in order to create the files needed for the new language you want to add to the app.
Manage Files
Run node scripts/poeditor/group-translation-files.js to generate 1 JSON file per language, with all the translation vars in it. From there, you can easily make any edit you want. When you're done, you can run node scripts/poeditor/spread-translation-files.js to merge your edits and spread them into all the translation files across the repo.
π Deployment
Any tag starting with v will runs expo publish. During this step app.example.json is used to generate an app.json file for expo's deployment, this is done with the following script scripts/generate-app-json.js.
π Build
First you need to configure SENTRY_AUTH_TOKEN and SENTRY_DSN secrets on expo.dev and then define projectId in app.config.js. Then run npm install dotenv and place your secrets inside .env file that you need to create with SENTRY_AUTH_TOKEN and SENTRY_DSN, like in .env.example.
Run eas build -p ios to build for the App Store Connect and eas build -p android for the Google Play Console.
π¨βπ» Contribute β€οΈ
More than 40 developers have contribute to the app, thanks a lot to them!
Have a look to contributing.md if you want to contribute!
π Backers
A big thank you to ChristopherΒ Gwilliams and to the Phelps family for their amazing contribution to the Kickstarter!
Β©οΈ Open source - licence
Repository and contributions are under GNU General Public License v3.0