House Rent Management System
JavaFX Desktop Application — Built End-to-End for a Real User
A complete offline Windows desktop application for rental property management. Built from real-world requirements, covering tenants, flats, monthly rent collection, PDF receipt generation, repair logs, audit trails, and full installer packaging — demonstrating both development depth and QA mindset.
Project Overview
This project was built to solve a real problem: a family property owner managing multiple flats needed a simple, offline-capable tool to replace their manual spreadsheet-based records. There was no internet requirement, no cloud dependency — just a reliable desktop app that works every time.
Building this end-to-end — from requirements gathering through to a packaged Windows installer — gave me direct experience with the full software development lifecycle. As a QA engineer, this project sharpened my understanding of how software is built, which makes me a more effective tester when evaluating requirements, edge cases, and failure modes.
Features Built
Flat Management
Add, edit, and deactivate flats. Track flat numbers, floor, type, monthly rent, status (occupied/vacant), and associated amenities.
Tenant Management
Full tenant profiles: NID number, contact, emergency contact, move-in date, advance/deposit amounts, and tenancy documents reference.
Rent Collection
Monthly rent recording with due date, payment date, amount paid, outstanding balance, and payment method (cash/bKash/bank).
PDF Receipt Generation
Automated A5/A4 rent receipts generated using Apache PDFBox — formatted, printable, with landlord name, tenant details, and payment breakdown.
Repair & Maintenance Log
Track repair requests by flat — description, date reported, contractor, cost, status (pending/in-progress/resolved) with photo attachment support.
Move-out Settlement
Calculate final settlement on tenant departure: outstanding rent, advance deductions, utility dues, and damage charges with PDF summary.
Excel Export
Export tenant and payment records to Excel sheets using Apache POI — monthly summaries and full history exports for external record keeping.
Audit Log & Backup
Every data modification is time-stamped in an audit log. One-click SQLite database backup to a chosen directory with date-stamped filename.
Technical Decisions
JavaFX for UI
Chosen over Swing for its modern FXML-based UI separation, CSS styling capability, and superior look. Scene Builder was used for layout design, keeping UI and logic cleanly separated.
SQLite for Storage
A single-file embedded database — no server setup, no network dependency. Perfect for a single-user offline desktop app. JDBC connectivity via the SQLite JDBC driver.
Apache PDFBox for Receipts
PDFBox was chosen over iText due to its open-source Apache 2.0 license. Custom A5 layout built with PDFBox's PDPageContentStream API.
Maven for Build Management
All dependencies managed via pom.xml. Maven Shade plugin used to produce a fat JAR with all dependencies bundled for distribution.
Inno Setup for Windows Installer
The final application was packaged into a Windows .exe installer using Inno Setup — includes JRE bundling so the user does not need Java pre-installed.
QA Perspective
Building this application end-to-end gave me direct insight into where software breaks from a developer's point of view — which has made me a significantly sharper manual QA tester:
Boundary Awareness
I know exactly what happens when a rent amount field receives alphabetic input, or when a date picker receives a past date — because I had to handle those edge cases in code.
Database Integrity
Designing foreign key relationships and cascade behaviours gave me deep understanding of data consistency bugs — what to look for when testing CRUD-heavy applications.
Packaging & Install Testing
Distributing a packaged installer taught me to think about environment-specific failures — missing runtime dependencies, file permission issues, and first-run configuration errors.
Real User Feedback
The app was used by a real end-user, which produced genuine usability feedback — a practical lesson in the difference between what passes a test and what actually works for a person.