August 9, 2026 · Magati Joel
Building Landlord Ledger: A Property Management App for Modern Landlords
How I built Landlord Ledger to simplify property, tenant, rent and payment management using Flutter, Supabase and PostgreSQL.

Why I Built Landlord Ledger
Managing rental properties can quickly become difficult when information is scattered across notebooks, spreadsheets, messages and payment records.
I wanted to build a system that brings the most important parts of property management into one place.
That idea became Landlord Ledger.
Landlord Ledger is a property management application designed to help landlords and property managers manage properties, units, tenants, rent, payments and financial records from a centralized system.
The Problem
Property management involves more than simply collecting rent.
A landlord may need to keep track of:
- Properties
- Rental units
- Tenants
- Tenancies
- Monthly rent
- Payments
- Outstanding balances
- Arrears
- Tenant statements
- Receipts
- Financial reports
When these records are maintained manually, it becomes easy to lose track of payments or calculate balances incorrectly.
Landlord Ledger was designed around these real-world workflows.
The Goal
The main goal was simple:
Build a reliable system that gives a landlord a clear picture of their rental business.
Instead of jumping between spreadsheets and paper records, the landlord should be able to open the application and immediately understand:
- How many properties they manage
- How many units are occupied
- Who owes rent
- Recent payments
- Outstanding balances
- Property performance
Core Features
Property Management
Landlords can organize their rental portfolio and manage individual properties and units.
The system separates properties from units so that a single property can contain multiple rental units.
Tenant Management
Tenant records are connected to the relevant rental unit and tenancy.
This makes it possible to maintain a clear relationship between:
Property → Unit → Tenant → Tenancy → Rent → Payment
This structure is important because rental transactions need to remain associated with the correct tenant and unit.
Rent Management
The application is designed around recurring rental charges.
Rent can be generated for tenants and tracked against payments received.
This makes it easier to identify:
- Paid rent
- Partially paid rent
- Outstanding rent
- Arrears
Payment Allocation
One of the more important parts of the system is payment allocation.
A payment should not simply be stored as a number.
The system needs to understand which tenant made the payment and how that payment affects their outstanding rental charges.
This allows the application to maintain accurate tenant balances and statements.
Tenant Statements
Tenant statements provide a chronological view of rental activity.
A statement can contain:
- Rent charges
- Payments
- Outstanding balances
- Transaction dates
- Running balances
This provides both the landlord and tenant with a clearer financial record.
Receipts and Reports
Landlord Ledger also includes document generation capabilities.
Payment receipts can be generated as PDFs, while reports provide landlords with useful financial information about their rental portfolio.
This turns the application from a simple CRUD system into a more practical property-management tool.
Technology Stack
Landlord Ledger is built using:
- Flutter
- Dart
- Supabase
- PostgreSQL
- Riverpod
Flutter provides the cross-platform application interface while Supabase provides the backend infrastructure and PostgreSQL database.
Riverpod is used for application state and dependency management.
Architecture
The application is organized around separate layers for:
- Authentication
- Domain models
- Repositories
- State management
- Business logic
- UI
The repository layer abstracts database operations from the interface.
This makes it easier to maintain the application and replace or extend backend functionality in the future.
Designing Around Real Rental Workflows
One of the biggest lessons from the project was that property management software should be designed around financial workflows rather than simply database tables.
For example, a payment needs to affect a tenant's outstanding rent.
That means the system needs to understand relationships between:
Rent Charges → Payments → Allocations → Balances → Statements
Thinking about these relationships early helped shape the architecture.
What I Learned
Landlord Ledger gave me an opportunity to work on several areas of application development at the same time.
Some of the biggest lessons included:
- Designing relational data models
- Building reusable repository layers
- Managing application state
- Handling financial transactions
- Generating PDF documents
- Designing dashboards around useful business metrics
- Building workflows around real-world business requirements
The project also reinforced the importance of keeping business logic separate from presentation code.
What's Next?
Landlord Ledger is designed to grow beyond basic property management.
Future improvements can include:
- Automated rent generation
- WhatsApp rent reminders
- Advanced financial reports
- M-Pesa payment integration
- Automated payment reconciliation
- Multi-property dashboards
- Landlord and staff roles
- Tenant portals
- Online rent payment
- Mobile notifications
The long-term goal is to create a practical property-management platform that reduces the administrative workload for landlords and property managers.
Final Thoughts
Landlord Ledger started with a simple question:
Can rental management be made easier with the right software?
Building the application has shown me that the answer is yes—but the real challenge is not simply creating screens.
It is understanding the business processes behind those screens.
That's what made Landlord Ledger one of the more interesting applications I've worked on.