diff --git a/Project-Description b/Project-Description new file mode 100644 index 0000000000..753598b0fe --- /dev/null +++ b/Project-Description @@ -0,0 +1,240 @@ +## 1. Scope + +### 1.1 In Scope +- Provide a way for me to manage the incomes and expenses of properties I own either wholly or jointly with a partner. +- Provide a way for me to see the Key Performance Indicators of any given property or my portfolio as a whole. + +### 1.2 Out of Scope +- Manage tenant experiences (leases, maintenance requests, messaging), or make payments to vendors or receive payments from tenants. + +## 2. Functional Requirements + +### 2.1 User Authentication and Role Management ๐Ÿ” + +#### User Roles: +- **๐Ÿ‘‘ Admin**: Full access to all properties and features. +- **๐Ÿค Partner**: Limited access to properties they are associated with. +- **๐Ÿ‘๏ธ Viewer**: Read-only access for specific users (e.g., accountants). + +#### Authentication: +- ๐Ÿ”’ Secure login system with password management. +- ๐Ÿ”‘ Multi-Factor Authentication (MFA) for enhanced security. + +#### Role-Based Access Control (RBAC): +- ๐ŸŽฏ Users can only access data and features relevant to their role and associated properties. + +### 2.2 Property and Partner Management ๐Ÿ ๐Ÿค + +#### Property Management: +- ๐Ÿ“ Ability to add, edit, and remove properties. +- ๐Ÿ“Š Store and manage financial details for each property: + - ๐Ÿ’ต Loan Amount + - ๐Ÿ“ˆ Interest Rate + - ๐Ÿ“… Loan Term (in years or months) + - ๐Ÿ—“๏ธ Date Acquired + - ๐Ÿฆ Loan Type (fixed-rate, adjustable-rate) + - ๐Ÿ’ฐ Down Payment + - ๐Ÿ’ผ Closing Costs + - ๐Ÿ› ๏ธ Renovation Costs + - ๐Ÿ—๏ธ Holding Costs +- ๐Ÿ”„ Automatically update the current market value of the property for equity calculations using external sources (e.g., Zillow, Redfin). +- ๐Ÿ”— Link each property to one or more partners. + +#### Partner Management: +- ๐Ÿง‘โ€๐Ÿ’ผ Manage partner details and their associated properties. +- ๐Ÿ“Š Track ownership percentages for accurate income and expense splitting. + +### 2.3 Income and Expense Tracking ๐Ÿ’ธ + +#### Transaction Management: +- ๐Ÿ’ผ Record income and expenses by property. +- ๐Ÿ“ Input fields: Date, Property, Description, Amount, Category, and Partner (if applicable). + +#### Expense Categorization: +- ๐Ÿ—‚๏ธ Define categories for expenses (e.g., maintenance, taxes, utilities). +- ๐Ÿ” Allow filtering of expenses by category. + +#### Partner Payments: +- ๐Ÿ’ฐ Track and manage the split of income and expenses with partners. +- โœ… Mark whether the partner has reimbursed their share of expenses or received their share of income. + +### 2.4 Document Management ๐Ÿ“‚ + +#### File Upload: +- ๐Ÿ“Ž Attach supporting documents (e.g., invoices, receipts) to each transaction. +- ๐Ÿ–ผ๏ธ Supported file types: PDF, JPEG, PNG. + +#### Document Retrieval: +- ๐Ÿ” Search and filter documents by property, date, or transaction details. +- ๐Ÿท๏ธ Tag documents with keywords for easier retrieval. + +### 2.5 Reporting and Analytics ๐Ÿ“Š + +#### Custom Reports: +- ๐Ÿ“‘ Generate reports on income, expenses, and partner payments. +- ๐ŸŽ›๏ธ Filter reports by date range, property, partner, and expense category. + +#### Analytics Dashboard: +- ๐Ÿ“‰ Visual representation of income and expenses over time. +- ๐Ÿ“Š Identify trends and patterns in property performance. + +#### Export Data: +- ๐Ÿ’พ Export reports in CSV and PDF formats. +- ๐Ÿ”„ Ability to export transaction data for external analysis. + +### 2.6 Notifications and Reminders ๐Ÿ”” + +#### Automated Reminders: +- โฐ Set reminders for unpaid expenses and unsettled income splits. +- ๐Ÿ“ฉ Send notifications to relevant partners when an entry is added. +- โš ๏ธ Dashboard alerts for pending actions requiring user attention. + +### 2.7 Audit Trail ๐Ÿ•ต๏ธโ€โ™‚๏ธ + +#### Change Tracking: +- ๐Ÿ“ Log all changes made to transactions, including who made the changes and when. +- ๐Ÿ›ก๏ธ Track critical user actions such as logins, access attempts, and role changes. + +#### Audit Reports: +- ๐Ÿ“œ Generate audit reports showing the history of changes for accountability. + +### 2.8 Data Validation and Input Constraints โœ… + +#### Form Validation: +- โœ”๏ธ Ensure data entered in forms is validated (e.g., date formats, required fields). + +#### Database Constraints: +- ๐Ÿ—„๏ธ Enforce constraints at the database level (e.g., non-null fields, unique constraints). + +### 2.9 Backup and Data Recovery ๐Ÿ’พ + +#### Automated Backups: +- ๐Ÿ•’ Schedule regular backups of the database and stored documents. +- โ˜๏ธ Store backups securely off-site (e.g., cloud storage). + +#### Data Recovery: +- ๐Ÿ”„ Regularly test the backup restoration process. +- ๐Ÿ› ๏ธ Implement a data recovery plan to minimize disruption in case of data loss. + +### 2.10 Testing and Maintenance ๐Ÿงช๐Ÿ› ๏ธ + +#### Unit Testing: +- ๐Ÿงฉ Develop unit tests for individual components of the application. + +#### Integration Testing: +- ๐Ÿ”— Implement integration tests to ensure that different parts of the system work together seamlessly. + +#### Continuous Integration (CI): +- ๐Ÿค– Set up a CI pipeline to automatically run tests on code changes. + +#### Ongoing Maintenance: +- ๐Ÿ”„ Plan for regular updates, bug fixes, and performance optimizations. + +### 2.11 Loan Amortization Schedule ๐Ÿ“… + +#### Amortization Calculation: +- ๐Ÿงฎ Automatically generate an amortization schedule for each loan. +- ๐Ÿ“ Display monthly details including principal paid, interest paid, remaining balance, and cumulative payments. + +#### Loan Progress: +- ๐Ÿ“† Display how many months into the loan the property is. +- ๐Ÿ’ธ Show the principal portion of the next mortgage payment. +- ๐Ÿ“‰ Calculate the remaining loan balance. + +### 2.12 Equity Calculation ๐Ÿ“ˆ + +#### Equity Calculation: +- ๐Ÿ”ข Calculate property equity as: + **Equity = Current Market Value - Remaining Loan Balance** +- ๐Ÿ”„ Allow for periodic updates to market value for accurate equity calculation. + +### 2.14 Visualization and Reporting ๐Ÿ“Š + +#### Amortization Charts (Per Property): +- ๐Ÿ“ˆ Visualize loan amortization for each property, including: + - Loan balance over time + - Cumulative interest paid + - Cumulative principal paid + +#### Aggregate Amortization Charts: +- ๐ŸŒ Display an aggregate view of loan amortization across all properties: + - Total loan balance + - Total cumulative interest paid + - Total cumulative principal paid + +### 2.15 Key Performance Indicators (KPIs) ๐Ÿ“Š๐Ÿ“ˆ + +#### Cash-on-Cash Return: + +- **Data Points**: + - ๐Ÿ’ต Total Cash Invested: Include down payment, closing costs, and other initial investments. + - ๐Ÿ“… Annual Pre-Tax Cash Flow: Sum of all income minus operating expenses and mortgage payments for the year. + +- **Calculation**: + **CoC Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) * 100** + +- **Display**: + Show CoC Return for each property. Provide an aggregate CoC Return for the entire portfolio. + +#### Net Monthly Cash Flow: + +- **Data Points**: + - ๐Ÿ’ต Monthly Income: Include rental income and other revenue sources. + - ๐Ÿฆ Monthly Expenses: Include mortgage payment, property taxes, insurance, utilities, maintenance, and other recurring costs. + +- **Calculation**: + **Net Monthly Cash Flow = Monthly Income - Monthly Expenses** + +- **Display**: + Show Net Monthly Cash Flow for each property on a monthly basis. Provide an aggregate Net Monthly Cash Flow for the entire portfolio. + +## 3. Non-Functional Requirements โš™๏ธ + +### 3.1 Scalability ๐Ÿš€ + +#### Database Design: +- ๐Ÿ“Š Design a scalable database schema to handle increasing data as more properties and transactions are added. + +#### Horizontal Scaling: +- ๐Ÿ–ฅ๏ธ Ensure the application can scale horizontally by adding more servers to handle increased load. + +#### Load Balancing: +- โš–๏ธ Implement load balancing to distribute traffic evenly across servers. + +### 3.2 Performance Optimization โšก + +#### Database Indexing: +- ๐Ÿ” Index database tables to optimize the speed of queries, especially for large datasets. + +#### Caching: +- ๐ŸŽ๏ธ Implement caching mechanisms to reduce database load and improve data retrieval times. + +### 3.3 Security ๐Ÿ”’ + +#### Data Encryption: +- ๐Ÿ›ก๏ธ Encrypt sensitive data both at rest and in transit. + +#### Access Logs: +- ๐Ÿ“œ Maintain logs of user access and activities to detect and respond to unauthorized access attempts. + +#### Security Audits: +- ๐Ÿ•ต๏ธ Conduct regular security audits to identify and mitigate vulnerabilities. + +### 3.4 User Interface (UI) and User Experience (UX) ๐ŸŽจ + +#### Ease of Use: +- ๐Ÿ–ฑ๏ธ Design a clean and intuitive user interface, ensuring that even non-technical users can navigate the application easily. + +#### Responsive Design: +- ๐Ÿ“ฑ Ensure the application is responsive and works well on different screen sizes (desktop, tablet, small laptops). + +#### Customizable Views: +- โš™๏ธ Allow users to customize their dashboard and reports based on their preferences. + +## 4. Future Considerations ๐Ÿ”ฎ +- ๐Ÿ”„ Integration with Accounting Software (Not in current scope but could be considered for future iterations). +- ๐Ÿ“ฑ Mobile Application (Could be added in future versions if the need arises). +- ๐Ÿ“‘ Legal Compliance (Consider adding features to track compliance with real estate laws in future updates). + +## 5. Conclusion ๐Ÿ +This requirements document outlines the essential features and considerations for the Real Estate Investment Management Application. The application is designed to be secure, scalable, and user-friendly, providing robust tools for managing property-related finances, partner relationships, and key financial metrics such as Cash-on-Cash Return and Net Monthly Cash Flow. By focusing on these core functionalities, this project aims to provide a solid foundation for efficient real estate investment management.