Home

Awesome

<h1 align="center">๐ŸŒฑ NMF.earth app</h1> <h3 align="center">Understand and reduce your carbon footprint</h3> <br /> <p align="center"> <a href="https://apps.apple.com/us/app/nmf-earth/id1494561829"> <img alt="app-store" src="https://github.com/NotMyFaultEarth/nmf-app/blob/main/app-store.png" /> </a> <a href="https://play.google.com/store/apps/details?id=nmf.earth"> <img alt="google-play" src="https://github.com/NotMyFaultEarth/nmf-app/blob/main/play-store.png" /> </a> </p> <br /> <p align="center"> <a href="https://www.figma.com/community/file/967052407514062912"> <img alt="figma" src="https://github.com/NotMyFaultEarth/nmf-app/blob/main/figma.png" /> </a> </p> <br />

screenshots

Depfu Contributor Covenant Build Status runs with expo

Repository for the NMF.earth React Native application, built with Expo, Redux Toolkit and Typescript. Design can be found on Figma.

<br />

๐Ÿ“Š Data source

Carbon data comes from NMF's carbon footprint repo while barcode product scanned data comes from Open Food Facts api.

<br />

๐Ÿ“ฆ Getting started

Installing Dependencies:

$ yarn

Running the app:

$ yarn start

For starting the app on a specific OS:

$ yarn ios | yarn android

Copy the 2 files that contain secrets and replace them with yours

$ cp .env.example .env
<br />

๐Ÿ‘ฉ๐Ÿพโ€๐Ÿ’ป Development

You can check this manually by running:

$ yarn lint

or

$ yarn typescript

You can ask eslint to fix issues by running:

$ yarn lint:fix
<br />

๐Ÿ›  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
<br />

๐ŸŽจ Storybook

Stories (*.story.tsx) can be automatically added to storyLoader.js with :

$ yarn prestorybook
<br />

๐Ÿ“— 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: ![Earth](earth.png) and should be place in assets/images/guide.

<br />

For methodology screen, just run node scripts/generate-methodology.js to update methodology.json from methodology.md.

<br />

For emission info screen, just run node scripts/generate-emission-info.js to update emission-info.json from assets/emission-info/markdown/*.md.

<br />

๐Ÿ—ฃ 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.

<br />

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.

<br />

๐Ÿš€ 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.

<br />

๐Ÿ— 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.

<br />

๐Ÿ‘จโ€๐Ÿ’ป 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!

<br />

๐Ÿ† Backers

A big thank you to Christopherย Gwilliams and to the Phelps family for their amazing contribution to the Kickstarter!

<br />

ยฉ๏ธ Open source - licence

Repository and contributions are under GNU General Public License v3.0