Gather is a modular mobile data collection platform designed for field research, ecological surveys, and flexible scientific use cases. Built using React Native and powered by Expo, it supports structured data entry through photos, videos, geolocation, and numerical input — all synced to a cloud backend.
🧪 Funded by the National Science Foundation (NSF)
🔬 Developed by the Saint Louis University Computer Vision Lab
🌱 In collaboration with the New Roots for Restoration Biology Integration Institute (NRR BII)
- Offline-first mobile app for structured survey collection
- Supports photos, videos, maps, audio, numeric/text input
- On-device validation and conditional task logic
- Over-the-air (OTA) updates + internal distribution builds
- Integrates with EAS, Firebase, and MongoDB (configurable)
To run Gather locally, make sure you have Node.js, Expo CLI, and Yarn installed.
git clone https://github.com/your-org/gather.git
cd gather
yarn installnpx expo startUse the QR code in your terminal to open the app on a physical device with a development build.
We use Expo Application Services (EAS) for production builds and OTA (over-the-air) updates.
eas build --platform all --profile development
# or
eas build --platform all --profile testing
# or
eas build --platform all --profile productioneas update --channel production --message "Update message here"📖 EAS Build Docs 📖 EAS Update Docs
Internal distribution builds are created for both Android and iOS platforms. You can access builds and install them via QR code links or download pages hosted in your team's documentation or GitHub Releases.
We follow a conventional Git workflow using feature branches and a linear commit history.
We use release-please and Conventional Commits to automate versioning, changelogs, and triggering builds via GitHub Actions.
-
feat:→ minor version bump (e.g.,1.2.0) -
fix:→ patch version bump (e.g.,1.2.1) -
feat!:orfix!:→ major version bump (e.g.,2.0.0)
| Type | Purpose |
|---|---|
chore: |
Routine tasks or maintenance (e.g., config updates) |
docs: |
Documentation changes only |
style: |
Code style changes (e.g., formatting, whitespace) |
refactor: |
Code changes that neither fix a bug nor add a feature |
perf: |
Changes that improve performance |
test: |
Adding or refactoring tests (no production code changes) |
ci: |
Changes to CI/CD pipeline or workflow configuration |
build: |
Changes that affect the build system or dependencies |
- Merging to
main:- If the version ends in
.0(e.g.,1.1.0,2.0.0), a production build is triggered - Otherwise, an OTA update is triggered
- If the version ends in
- Merging to
developmenttriggers a testing build - Opening a PR to
maintriggers a testing build - Pushing to any branch named
feature/*with[build]in the commit message triggers a development build
We use Rebase and Merge to maintain a linear commit history, which is required for release-please to function correctly.
This project is made possible through the support of the NSF and the NRR Biology Integration Institute and is part of ongoing research into scalable ecological monitoring and intelligent data workflows.
For collaboration inquiries, please contact austin.carnahan@slu.edu