Logo Lanfrica

geto-san/android-native

Domain:

peace and security

Record type:

software
Creator:
get
Host:
WildWatch native Android app - an offline-first wildlife conservation platform for Uganda, built for rangers tracking mountain gorillas in remote terrain. WildWatch A native Android app for wildlife conservation reporting and ranger operations in Uganda. ## What this is WildWatch is an offline-first Android app serving two audiences: rangers, who use it for incident response, patrol tracking, and evidence collection, and the public, who use it to report wildlife sightings and human-wildlife conflict incidents. It is built with Kotlin and Jetpack Compose, backed by Firebase (Authentication, Firestore, Storage, Cloud Messaging), with Room providing local persistence and an offline outbox so reports and patrol data can be captured with no signal and synced automatically once connectivity returns. This app's data reaches a separate Laravel-based web portal (`../web-portal/`) for wardens and UWA officials through a Firebase-to-Laravel bridge; the full contract for what data crosses that bridge and how is documented in `../BRIDGE-CONTRACT.md`. Which features and screens a signed-in account can reach depends on its role — ranger, warden, UWA official, or public — documented in `../REPOS.md`'s role-model write-up alongside the equivalent portal-side roles. The Firebase project runs on the Spark (free) plan, which cannot run Cloud Functions at all — so for incidents (which also covers wildlife sightings and, once a creation screen exists, SOS alerts; all three are just an `Incident` row with a different `type`), this app calls the Laravel API directly right after a successful Firestore write, instead of relying on a Cloud Function to relay it. See `IncidentRepositoryImpl.syncPending()` and `LARAVEL_API_BASE_URL` below. Other Cloud-Functions-dependent behavior (default role/claims on signup, the 3-device session cap, push notification triggers) has not been redesigned for Spark yet and does not currently run. ## Capabilities Incident and wildlife-sighting reporting with camera capture and GPS tagging, submitted through an offline-first outbox that queues locally and syncs when connectivity allows. A ranger tracking sc …