PantauBumi
An AI-powered multi-disaster early warning Android app that delivers real-time, location-specific flood, landslide, and earthquake risk predictions with fully offline evacuation guidance and community crowdsourcing.

The Challenge
Indonesia ranks 2nd globally for disaster vulnerability with a score of 43.5%, yet there is a critical gap between raw government disaster data and actionable personal warnings. Most people living in disaster-prone areas have no reliable, personalized way to know when a flood, landslide, or earthquake is approaching and even less so when their internet connection drops.
The challenge was building a complete Android application from scratch that bridges this gap: aggregating real-time data from BMKG, BNPB, USGS, and PetaBencana, running ML prediction models on top, delivering push alerts before events occur, and maintaining full functionality even when offline.
My Role
As the sole Android Developer, I designed and built the entire mobile application end-to-end using Jetpack Compose and modern Android architecture.
Core App & Architecture
- Built the full Android application using Jetpack Compose, Material 3, Hilt for dependency injection, and Navigation Compose for screen routing
- Structured the app around a clean MVVM architecture with clearly separated UI, domain, and data layers
Dashboard & Real-Time Data
- Implemented GPS-based location detection via. FusedLocationProviderClient
- Built a color-coded risk dashboard consuming AI risk scores from the FastAPI backend, covering floods, landslides, and earthquakes
- Added auto-refresh every 5 minutes, pull-to-refresh, shimmer loading states, and offline cache fallback via Room
Offline-First Map
- Integrated MapLibre Android SDK with offline MBTiles support evacuation routes and shelter markers work without internet
- Built a full-screen map with layer toggles (Banjir / Longsor / Gempa / Laporan), bottom sheet marker details, and offline banner detection
Community Reports
- Built the community report submission flow with hazard type selector, NLP-verified badge display, anonymous device ID (UUID), and rate-limit countdown UX
- Integrated report flagging with 3-flag auto-hide logic
Push Notifications & Background Jobs
- Configured Firebase Cloud Messaging (FCM) for push alerts before disaster events
- Set up WorkManager for silent background risk and alert checks every 15 minutes, surviving device reboots via RECEIVE_BOOT_COMPLETED
Alert History & Pagination
- Built cursor-based paginated alert history using Paging 3 + Compose, grouped by date with color-coded severity indicators
Settings & Preferences
- Implemented per-hazard notification toggles persisted in DataStore Added offline map download trigger via WorkManager and FCM token lifecycle management
Tech Stack: Kotlin, Jetpack Compose, Material 3, Hilt, Retrofit, Room, MapLibre, WorkManager, Firebase Cloud Messaging, Paging 3, DataStore, Coil, Python, FastAPI, Neon PostgreSQL
The Outcome
Delivered a complete, production-ready Android MVP fully integrated with a real FastAPI backend and ML prediction models. The app handles real-time risk data, offline map access, community crowdsourcing with NLP verification, and FCM push alerts.
