SewaKos
App connecting boarding house owners and tenants
Drag to rotate
SewaKos is a cross-platform boarding-house rental app I built solo to go deep on mobile development. It connects two sides of the same market — owners who list their kos and tenants who book a room — and carries each of them through the full journey, from sign-up to a verified payment. Built with Flutter and Dart on a Supabase backend, the project was never meant for the stores; it's a self-directed study for my Mobile Programming course, where the goal was to ship one complete, real-world flow end to end on my own.



Two roles behind one sign-in
The app opens with a splash, then email login and registration. At sign-up every account declares itself an owner or a tenant, and that single choice shapes everything that follows — the same app reveals a different home, navigation, and set of actions depending on who just signed in, so each side only ever sees the screens that matter to them.




The tenant journey, from search to history
For tenants, SewaKos runs the full rental journey on one set of screens: browse a boarding house and inspect its rooms, facilities, and price; reserve a room and upload proof of payment straight from the phone; then track every booking and its status from a single history. Each step carries the request forward — submitted, waiting on the owner, confirmed — so a renter always knows where they stand.



The owner's side: list and manage
Owners get a workspace of their own. They add a boarding house through a structured form — details, photos, and the rooms it offers — and manage everything they've listed from a single "my kos" view. Incoming bookings land in a queue carrying each tenant's request and payment proof, where the owner reviews, approves or rejects, and verifies the payment — the decision the entire tenant flow waits on.
My role
- 01Modeled the data in Supabase — users, boarding houses, rooms, bookings, and payments — with storage buckets for listing images and payment proof
- 02Built email authentication with role-based access that routes owners and tenants to different experiences
- 03Implemented the full tenant flow: search kos, inspect a property, book a room, upload payment proof, and track history
- 04Implemented the owner flow: add and manage kos and rooms, review incoming bookings, and verify payments
- 05Structured the Flutter app into core, feature, and theme layers to keep a solo codebase clean and modular
A learning project, taken seriously
SewaKos started as coursework for Mobile Programming, but I treated it like a real product: not a single screen, but a complete two-sided system with authentication, role-based navigation, and a booking lifecycle that runs from request to verified payment. Building all of it alone — design, data model, and every screen on both sides — was the whole point, and the fastest way I've found to actually learn Flutter.
Flutter on the front, Supabase at the back
The app is built with Flutter and Dart from a single codebase that targets both Android and iOS, organized into core, feature, and theme layers so it stays readable as it grows. Supabase handles the parts a real app can't fake — authentication, a Postgres database for users, kos, rooms, bookings, and payments, and storage buckets for listing images and payment proof — letting me focus on the mobile experience while still wiring up a genuine backend.