Purpose:
Build a single-user web-based tool for personal property management, allowing the owner to track properties, units, tenants, rent payments, and maintenance requests.
Key Goal: Have a minimal but complete system that you (the owner) can log into and manage all your property-related data—without the complexities of a multi-tenant or SaaS platform (that may come in a future phase).
2. Scope
1. Single-User Authentication
• A single admin login (username/password).
• Basic session or JWT-based security.
2. Property & Unit Management
• Create, read, update, delete (CRUD) properties.
• Each property has multiple units, also managed via CRUD operations.
• Track status of units (occupied, vacant, under maintenance).
3. Tenant & Lease Tracking
• Add and edit tenant profiles (contact info).
• Assign each tenant to a specific unit, with lease start/end dates.
• Store basic lease information (rent amount, deposit).
4. Rent Collection & Payment Logging
• Log payments (date, amount, method).
• Track overdue or unpaid rent.
• Optionally generate basic receipts or PDF downloads (if feasible).
5. Maintenance Requests
• Create and track maintenance tickets (description, status: open, in progress, resolved).
• Record associated costs and notes.
6. Dashboard/Overview
• A simple home screen showing:
• Number of properties/units.
• Occupancy info (occupied vs. vacant units).
• Total rent due, received this month, and any overdue payments.
• Open maintenance requests.
7. Settings
• Profile settings: change admin password, update personal details.
• Basic config like currency format, date format, etc.
8. Basic Notifications
• Email or system alert for overdue rent or maintenance updates. (If time permits.)
3. Detailed Feature Descriptions
3.1 Authentication & User Management
• Single Admin Login:
• Endpoint for login (email/username + password).
• Ability to log out.
• Password Reset:
• Optional: Could be a simple manual process if it’s purely for you.
• Security:
• Data should only be accessible after logging in.
3.2 Property & Unit Management
• Create Property:
• Fields: name, address, optional notes/photos.
• Property List & Detail:
• View all properties, click to see details and associated units.
• Add/Edit/Delete Units:
• Each unit has a name/number, monthly rent, status.
• Property/Unit Status:
• Mark units as occupied or vacant.
• If possible, auto-update status when a tenant moves in/out.
3.3 Tenant & Lease Tracking
• Tenant Profiles:
• Fields: name, phone, email.
• Link Tenant → Unit:
• Lease start/end date, monthly rent, security deposit.
• Lease Renewal/Update:
• Extend lease dates or change rent (as a manual edit).
3.4 Rent Collection & Payment Logging
• Record Payment:
• Payment date, amount, method (cash, check, transfer).
• Link to the tenant/unit so it’s trackable historically.
• Overdue Check:
• Some indicator on the dashboard or a separate list for tenants who haven’t paid by a certain date.
• Receipts (if feasible):
• Generate a simple PDF or text-based receipt to save or print.
3.5 Maintenance Requests
• Add Maintenance Request:
• Title or description, date created, optional photos (if easy to implement).
• Status workflow: Open → In Progress → Resolved.
• Maintenance Log:
• Keep a record of all tickets, including costs, vendor info, date completed.
3.6 Dashboard / Overview
• Tiles / Cards for:
• Total Properties, Total Units, Occupied Units, Vacant Units.
• This Month’s Expected Rent vs. Received.
• Number of Overdue Payments.
• Number of Open Maintenance Requests.
• Quick Links to manage properties, payments, and maintenance.
3.7 Settings
• Profile Settings:
• Update admin password or email.
• Basic Application Settings:
• Currency symbol, date format (if time permits).
4. Technical Requirements
1. Front-End: React
• Responsive design
2. Back-End: Node.js with Express or NestJS (preferred).
• RESTful API design for key endpoints.
• Data validation on input (e.g., using a library like Joi/Zod).
3. Database:
• Preference for PostgreSQL (relational) or MongoDB (NoSQL).
• Must store property, tenant, and payment data reliably.
4. Deployment:
• Local environment for development (Docker optional but nice to have).
• Production environment can be anything simple (AWS, DigitalOcean, Heroku, etc.).
• Provide instructions for deployment and environment variables in a README.
5. Security Considerations:
• Passwords hashed using bcrypt or similar.
• Use HTTPS in production if feasible (SSL cert if hosted publicly).
6. Version Control:
• Source code stored in a private Git repo.
• We expect regular commits with descriptive messages.