Uganda Rent App
A cross-platform rental app built with Flutter, one Dart codebase running natively on both Android and iOS.
- Client
- Uganda Rent App
- Role
- Mobile App Developer
- Engagement
- App Project
- Status
- Currently in progress

Project Overview
Uganda Rent App is a mobile application for finding and listing rental property, built with Flutter. It is the project where my mobile work moved from experimenting to shipping something structured.
Flutter was chosen for a practical reason rather than a fashionable one: a single Dart codebase produces native Android and iOS builds, which for a small team is the difference between one app and two half-maintained ones.
The Challenge
Looking for a place to rent in Uganda usually means moving between WhatsApp groups, social posts and brokers, with listings that are inconsistent, undated and hard to compare. The information exists; the structure does not.
An app only improves on that if it imposes structure: consistent fields, real filters, and listings that can be compared side by side. Otherwise it is a social feed with an icon.
- Listings need consistent, comparable fields, not free text
- Search and filtering have to work on a modest connection
- The interface must be operable one-handed, on a phone, outdoors
- Both Android and iOS from one maintainable codebase
The Approach
I started from the listing data model rather than the screens. Deciding what a listing is (which fields are required, which are optional, how location and price are represented) determines what search, filtering and comparison can later do.
Screens were then designed around the two things a renter actually does: narrow a long list down quickly, and judge a single property properly once they reach it.
- Listing structure defined before any screen was built
- Browse, filter and detail treated as the three core paths
- Cross-platform from the start rather than ported later
Design
Mobile-first in the literal sense: there is no desktop layout to scale down from. Touch targets are sized for thumbs, primary actions sit within comfortable reach, and the listing card carries enough information to make a decision without opening the detail screen.
Property types are surfaced as icons directly under the search field (homes, apartments, offices, spaces to let and rooms) so the categories are visible rather than hidden behind a filter sheet. A listing card shows the property type, its area, and the monthly price in UGX, which is the shortlist a renter actually makes decisions on.
Type sizing and contrast are set for reading on a phone in daylight, not on a monitor indoors.
Development
Built in Flutter with Dart, using composable widgets so that listing cards, filters and form fields are defined once and reused across screens. State is kept predictable so that navigating back to a filtered list does not lose the filter.
Data is loaded over REST, with loading, empty and error states handled as real states rather than afterthoughts, because an app on Ugandan mobile data will meet all three regularly.
The app serves both sides of the transaction: renters search, save listings and message landlords directly, while landlords post properties from the same app. That shapes the navigation: search, saved, post, messages and profile all sit in the bottom bar rather than behind a menu.
- Flutter and Dart, single codebase for Android and iOS
- Search by location, property type or keyword
- Saved listings and direct renter-to-landlord messaging
- Property posting for landlords in the same app
- REST API integration with explicit loading, empty and error states
- Navigation that preserves filter and scroll context
Technology
Stack
- Flutter
- Dart
- Android
- iOS
- REST APIs
- Figma
Services delivered
- Mobile App Development
- UI/UX Design
- API Integration
- Cross-platform Build
Optimization
Listing images are the heaviest part of a rental app, so they are requested at display size and cached rather than re-fetched on every scroll. Lists are built lazily so that a long result set does not cost memory it does not need.
- Lazily-built lists for long result sets
- Image caching and appropriately sized requests
- Careful handling of rebuilds to keep scrolling smooth
Current Status
Development is ongoing. Store listings, screenshots and any measured usage data will be added here once they exist and can be reported accurately.
Lessons
Flutter removes the cost of building twice, but it does not remove the need to think about each platform. Navigation conventions, back-button behaviour and typography still differ, and the places where the two platforms disagree are exactly where testing on real devices earns its time back.
Zentry Power
A corporate product site for an energy and revenue protection company, built to explain a technical offering to a non-technical buyer.