AngkutinMobile + admin panel
A waste pickup app for residents and collectors
Residents request pickups and report illegal dumping. Collectors see what to do next. Admins see everything. Two Flutter apps and a web panel on Firebase.
- Role
- Developer: app architecture, roles and the admin panel
- Period
- 2024
- Team
- Undergraduate thesis project
- Status
- Thesis project

- 3roles: residents, collectors and admins
- 2mobile apps plus a web admin panel
- Livestatus updates through Firestore listeners
Context
The problem
Pickup requests and dumping reports came in by phone and chat. Requests got lost, residents never heard back, and coordinators had no overview.
Solution
What we built
Separate apps for residents and collectors, plus an admin panel. Each role only sees what it can act on. Every change syncs in real time through Firestore, and locations are pinned on OpenStreetMap.
- Flutter
- Dart
- Firebase
- Firestore
- Crashlytics
- OpenStreetMap
- Real-time
Decisions
Decisions and trade-offs
OpenStreetMap instead of a paid map API
No per-request cost for a community project with an uncertain budget. The price was a bit more work on geocoding.
Real-time from the start
For residents the status is the product. With Firestore listeners they see a collector is on the way without refreshing.
My role
What I owned
- Defined the three roles and their permissions.
- Built the Flutter mobile app and the Flutter web admin panel.
- Set up the Firestore data structure and real-time listeners.
Artefacts

Reflection
What I'd do differently
Two-sided apps depend on the supply side. Next time I'd interview collectors as early as residents.
Have a process that should be a system?
I'm not looking for a new role, but I'm always up for a conversation about a system, a process or a collaboration.