Skip to main content
Back to Projects
🏢
Case Study In Development

Property Management System

An end-to-end property management platform handling the full lifecycle from tenant onboarding to financial reporting.

Role:Full-Stack Developer
Next.jsNestJSPostgreSQLAWS S3
6
Core Modules
Tenants, Leases, Properties, Maintenance, Finance, Reports
AWS S3
Document Storage
Lease docs, receipts, photos
8
Report Types
Financial, occupancy, maintenance, revenue
NestJS
Architecture
Enterprise-grade modular backend

Key Engineering Achievements

The engineering decisions and challenges behind this project

Enterprise Modular Architecture (NestJS)

Challenge

Property management involves deeply interconnected domains — tenants, leases, payments, and maintenance all reference each other.

Solution

Leveraged NestJS's module system to create bounded contexts for each domain with well-defined interfaces between them. Used dependency injection for testability.

Impact

Clean domain boundaries that allow each module to evolve independently while maintaining referential integrity.

NestJSDDDDependency InjectionModules

Document Management with AWS S3

Challenge

Securely storing and retrieving lease agreements, tenant documents, and maintenance photos.

Solution

Implemented pre-signed URL uploads direct to S3, with server-side validation, virus scanning hooks, and automatic thumbnail generation for image documents.

Impact

Secure document handling with no server-side file storage overhead and instant retrieval.

AWS S3Pre-signed URLsDocument Management

Automated Financial Reporting

Challenge

Landlords need real-time visibility into revenue, arrears, and property performance.

Solution

Built a reporting engine that auto-generates financial summaries, occupancy rates, and maintenance cost breakdowns with exportable PDF reports.

Impact

Landlords get actionable financial insights without manual spreadsheet work.

ReportingPDF GenerationAnalytics

Project Analytics

A data-driven look at the project's architecture and performance

Module Size (Components)

Tenant Mgmt15
Lease Tracking12
Finance14
Maintenance10
Reports8

Effort Distribution

100%
Backend (NestJS)40%
Frontend (Next.js)30%
Database Design20%
AWS Integration10%

Developer's Note

This project pushed me into enterprise patterns — NestJS's opinionated structure was initially constraining, but it forced clean architecture that pays off as the codebase grows. The biggest challenge was modeling lease states (active, expired, renewed) correctly.

GN
George Njoroge
Full-Stack Developer