Clear records. Confident billing.
Review tenant charges, keep track of payments, and prepare invoices.
Tenant invoices 4
Full-month charges · 515 m² allocated area · All amounts in KRW
| Tenant / unit | Area | Invoice total | Paid | Outstanding | Status | Actions |
|---|
Monthly notice
Included on previewPlease use your unit number as the payment reference. Contact the property manager if any charge needs clarification.
Built for everyday work
A single place for billing, documents and payment records, designed for a server with limited computing resources.
Payment history
Canceled payments stay visible, with their reason.
| Tenant | Period | Date | Amount | Status / reason |
|---|
Open an invoice in Monthly billing to add or cancel a sample payment.
Documents
Download a sample PDF generated entirely in your browser.
These are fictional demonstration invoices. No customer contracts or operational files are included.
From spreadsheets to a working system.
A practical project for a property rental business.
The original problem
Charges were entered in Excel, exported to PDF, emailed, then saved to Google Drive. The client wanted to look up records and send invoices without being at a particular PC.
The application
I connected properties and leases with billing, payment history, document storage and invoice delivery using Python, Django, PostgreSQL and Docker.
What needed care
Corrections must retain payment history. Cancellations must keep their original records. Access depends on roles and properties. Backups need to be tested by restoring them.
Working within limits
The application runs on a NAS. I worked on reducing repeated queries, limiting expensive simultaneous jobs and controlling memory use.
This is a browser-only adaptation of selected workflows, not the live Django application. Data is fictional and changes stay in local browser storage. It does not demonstrate server authorization, email delivery or NAS performance.