Thanks for thinking about pitching in. This project only works with many hands.
- Pin & confirm finds in your neighborhood. The map is the product. Use the app.
- Add species to the catalog with accurate toxicity and look-alike data.
- Translate the UI — i18n scaffolding is in the
i18nbranch. - File issues — bugs, species errors, bad pins you've seen.
- Code — pick up anything tagged
good first issue.
git clone https://github.com/techempower-org/forageforall.git
cd forageforall
npm install
cp .env.example .env
# Fill in:
# INSTANT_APP_ID= (free at instantdb.com)
# GOOGLE_MAPS_IOS_KEY=
# GOOGLE_MAPS_ANDROID_KEY=
npm run schema:push
npm run seed:species
npx expo prebuild --clean
npm run ios- TypeScript strict mode
- Prettier + ESLint (runs on pre-commit)
- Components: PascalCase, one per file
- Hooks:
useThing.ts, return an object not a tuple - Screen files in
app/follow Expo Router conventions
- Fork, branch from
mainasfeat/xxxorfix/xxx - Write a short PR description — what, why, screenshots for UI work
- One reviewer approval + passing CI = merge
- We squash-merge with a conventional commit message
- Ads, analytics, tracking SDKs, or anything that phones home
- Hard dependencies on paid services (beyond Instant free tier + Google Maps)
- Features that weaken location privacy defaults
- Anything that violates
FORAGING_ETHICS.md
Be kind. We follow the Contributor Covenant v2.1.
By contributing, you agree your contributions are licensed under AGPLv3.