Deliverable 4 - betoooo08/MyFinPlanner GitHub Wiki
📦 Deliverable 4 – PMV + Documentation
1️⃣ Project Requirements
| Requirement ID | Requirement Description | Developed | Sprint |
|---|---|---|---|
| FR01 | Sign Up | ✅ | 4 |
| FR02 | Log‑In | ✅ | 4 |
| FR03 | Password Recovery | ✅ | 4 |
| FR04 | Transaction Details | ✅ | 1 |
| FR05 | Edit / Delete Transactions | ✅ | 1 |
| FR06 | Categorize Transaction Automation | ✅ | 1 |
| FR07 | Set Custom Budgets | ✅ | 2 |
| FR08 | Budget Visual Insights | ✅ | 2 |
| FR09 | Budget Limit Alerts | ✅ | 4 |
| FR10 | AI Spending Patterns | ✅ | 3 |
| FR11 | Detect Anomalies | ✅ | 3 |
| FR12 | AI Suggestions | ✅ | 3 |
| FR13 | Interactive Reports | ✅ | 4 |
| FR14 | Graphical Representations | ✅ | 2 |
| FR15 | Investment Management | ✅ | 2 |
| FR16 | Real‑time Investment Tracking | ✅ | 2 |
| FR17 | Label Investments | ✅ | 2 |
| FR18 | Export Reports | ✅ | 4 |
| FR19 | Set Financial Goals | ✅ | 3 |
| FR20 | Track Progress Toward FG | ✅ | 3 |
2️⃣ System Design
2.1 🚀 Deployment View
2.2 🧩 Implementation View
2.3 🗄️ Data Model
Entity-Relationship Diagram (ERD):*
Diagram with Apps division:
Data Dictionaries:
Users
| This table stores user account information |
| Attribute Name | Data Type | Primary Key | Not Null | Attribute Description | AutoInc |
|---|---|---|---|---|---|
| id | Int | PK | NN | Unique user identifier | Yes |
| username | String | NN | User login name | ||
| password | String | NN | Encrypted password | ||
| String | NN | User email address | |||
| is_active | Boolean | NN | Account active status | ||
| is_staff | Boolean | NN | Staff permissions flag | ||
| date_joined | Datetime | NN | Account creation timestamp | ||
| --- | --- | --- | --- | --- | --- |
| IndexName | IndexType | Attribute | |||
| PRIMARY | PRIMARY | id |
Transactions
| This table stores all financial transactions |
| Attribute Name | Data Type | Primary Key | Not Null | Attribute Description | AutoInc |
|---|---|---|---|---|---|
| id | Int | PK | NN | Unique transaction ID | Yes |
| user_id | Int | NN | Associated user ID | ||
| amount | Decimal | NN | Transaction amount | ||
| description | String | Transaction description | |||
| category_id | Int | NN | Category classification | ||
| transaction_type | String | NN | Income/Expense type | ||
| date | Date | NN | Transaction date | ||
| merchant | String | Merchant name | |||
| created_at | Datetime | NN | Record creation timestamp | ||
| --- | --- | --- | --- | --- | --- |
| IndexName | IndexType | Attribute | |||
| PRIMARY | PRIMARY | id | |||
| FOREIGN | FOREIGN | user_id | |||
| FOREIGN | FOREIGN | category_id |
Categories
| This table stores transaction categories |
| Attribute Name | Data Type | Primary Key | Not Null | Attribute Description | AutoInc |
|---|---|---|---|---|---|
| id | Int | PK | NN | Unique category ID | Yes |
| name | String | NN | Category name | ||
| category_type | String | NN | Income/Expense classification | ||
| icon | String | Display icon | |||
| color | String | Display color | |||
| --- | --- | --- | --- | --- | --- |
| IndexName | IndexType | Attribute | |||
| PRIMARY | PRIMARY | id |
Budgets
| This table stores user budgeting information |
| Attribute Name | Data Type | Primary Key | Not Null | Attribute Description | AutoInc |
|---|---|---|---|---|---|
| id | Int | PK | NN | Unique budget ID | Yes |
| user_id | Int | NN | Owner user ID | ||
| category_id | Int | NN | Budget category | ||
| amount | Decimal | NN | Budgeted amount | ||
| spent | Decimal | NN | Amount spent | ||
| period | String | NN | Budget period (monthly/yearly) | ||
| alert_threshold | Int | Spending alert percentage | |||
| --- | --- | --- | --- | --- | --- |
| IndexName | IndexType | Attribute | |||
| PRIMARY | PRIMARY | id | |||
| FOREIGN | FOREIGN | user_id | |||
| FOREIGN | FOREIGN | category_id |
Goals
| This table stores financial goals |
| Attribute Name | Data Type | Primary Key | Not Null | Attribute Description | AutoInc |
|---|---|---|---|---|---|
| id | Int | PK | NN | Unique goal ID | Yes |
| user_id | Int | NN | Owner user ID | ||
| name | String | NN | Goal name | ||
| target_amount | Decimal | NN | Target amount | ||
| current_amount | Decimal | NN | Current saved amount | ||
| deadline | Date | NN | Target completion date | ||
| description | Text | Detailed description | |||
| --- | --- | --- | --- | --- | --- |
| IndexName | IndexType | Attribute | |||
| PRIMARY | PRIMARY | id | |||
| FOREIGN | FOREIGN | user_id |
Investments
| This table stores investment portfolio data |
| Attribute Name | Data Type | Primary Key | Not Null | Attribute Description | AutoInc |
|---|---|---|---|---|---|
| id | Int | PK | NN | Unique investment ID | Yes |
| user_id | Int | NN | Owner user ID | ||
| symbol_id | Int | NN | Investment symbol reference | ||
| name | String | NN | Investment name | ||
| shares | Decimal | NN | Number of shares | ||
| purchase_price | Decimal | NN | Original purchase price | ||
| current_price | Decimal | NN | Current market price | ||
| --- | --- | --- | --- | --- | --- |
| IndexName | IndexType | Attribute | |||
| PRIMARY | PRIMARY | id | |||
| FOREIGN | FOREIGN | user_id | |||
| FOREIGN | FOREIGN | symbol_id |
GoalContributions
| This table stores contributions made towards financial goals |
| Attribute Name | Data Type | Primary Key | Not Null | Attribute Description | AutoInc |
|---|---|---|---|---|---|
| id | Int | PK | NN | Unique contribution ID | Yes |
| goal_id | Int | NN | Associated goal ID | ||
| amount | Decimal | NN | Contribution amount | ||
| date | Date | NN | Contribution date | ||
| --- | --- | --- | --- | --- | --- |
| IndexName | IndexType | Attribute | |||
| PRIMARY | PRIMARY | id | |||
| FOREIGN | FOREIGN | goal_id |
InvestmentSymbols
| This table stores reference data for investment symbols |
| Attribute Name | Data Type | Primary Key | Not Null | Attribute Description | AutoInc |
|---|---|---|---|---|---|
| id | Int | PK | NN | Unique symbol ID | Yes |
| symbol | String | NN | Ticker symbol | ||
| name | String | NN | Company/fund name | ||
| type | String | NN | Investment type (stock/bond/etc) | ||
| --- | --- | --- | --- | --- | --- |
| IndexName | IndexType | Attribute | |||
| PRIMARY | PRIMARY | id |
Reports
| This table stores generated financial reports |
| Attribute Name | Data Type | Primary Key | Not Null | Attribute Description | AutoInc |
|---|---|---|---|---|---|
| id | Int | PK | NN | Unique report ID | Yes |
| user_id | Int | NN | Owner user ID | ||
| name | String | NN | Report name | ||
| description | Text | Report description | |||
| category | String | NN | Report category | ||
| format | String | NN | File format (PDF/CSV) | ||
| start_date | Date | NN | Report period start | ||
| end_date | Date | NN | Report period end | ||
| file | File | NN | Generated file | ||
| created_at | Datetime | NN | Creation timestamp | ||
| --- | --- | --- | --- | --- | --- |
| IndexName | IndexType | Attribute | |||
| PRIMARY | PRIMARY | id | |||
| FOREIGN | FOREIGN | user_id |
AIInsights
| This table stores AI-generated financial insights |
| Attribute Name | Data Type | Primary Key | Not Null | Attribute Description | AutoInc |
|---|---|---|---|---|---|
| id | Int | PK | NN | Unique insight ID | Yes |
| user_id | Int | NN | Owner user ID | ||
| prompt | Text | NN | User query prompt | ||
| response | Text | NN | AI-generated response | ||
| timestamp | Datetime | NN | Generation time | ||
| insight_type | String | NN | Insight category | ||
| --- | --- | --- | --- | --- | --- |
| IndexName | IndexType | Attribute | |||
| PRIMARY | PRIMARY | id | |||
| FOREIGN | FOREIGN | user_id |
3️⃣ Usability Analysis
| Comment / Observation | Possible Improvement Action | Implemented |
|---|---|---|
| Home page layout feels cramped and visually inconsistent. | Redesign the home page with improved spacing, responsive sections, and a consistent visual hierarchy. | No |
| User profile dropdown menu missing in header. | Display user avatar with a dropdown for profile access and logout. | Yes |
| Overall UI appears truncated and lacks cohesion. | Standardize design across all pages using fluid layouts, consistent padding, and unified styling. | No |
| Dark mode toggle needs refinement. | Ensure theme persistence and toggle button in the header works consistently across pages. | Yes |
| “About Us” is not accessible in the main navigation. | Add an “About Us” link to the header navigation bar for easy access. | No |
| Header area is underutilized. | Leverage header space for key calls-to-action and streamlined navigation elements. | No |
| Investment charts lack a trend-line overlay. | Add trend lines to investment performance charts to highlight long-term movements. | No |
| Dashboard cannot filter data by date. | Implement date-range filters on the dashboard to let users customize their data view. | No |
| Budget alerts are not prominent enough. | Enhance budget notifications with toast messages or modal pop-ups when thresholds are reached. | No |
| No way to add new categories within the transaction form. | Enable inline category creation in the transaction form (e.g., a “+ New Category” option). | No |
| Transactions are not color-coded for type distinction. | Apply green styling for income rows and red for expenses to improve visual clarity. | No |
| Report export to CSV and PDF is functioning correctly. | Users can download reports as PDF and CSV directly from the UI with proper formatting. | Yes |
| CSV export for reports needs improvement (format & headers). | Refine CSV export to include descriptive column headers, correct delimiters, and proper encoding. | No |
4️⃣ Repository
- Link to repo: <GitHub URL>
- All commits include clear, descriptive messages referencing requirements.
- README lists:
- Required libraries and install commands
- Commands to run the application
5️⃣ Video
- 🔗 Link: https://youtu.be/8erSQ9jG2E8
- ⏱️ Length: 4‑5 minutes
- 👥 All team members appear
Structure
- Pitch (1 min)
- Team members, Project name, Problem, Solution
- Live Demo (3 min)
- Showcase key functionalities
- User / Product Owner Feedback (1 min)
6️⃣ Project Management
6.1 📌 Backlog
- Updated user stories with acceptance criteria, status, tasks & owners (see GitHub Projects).
6.2 📅 Weekly Meetings
-
Logs for each week answering:
- What did I do last week?
- What will I do this week?
- Any blockers?
-
Product‑Owner meetings recorded.
-
Weekly Meetings available at Project's wiki
6.3 🔄 Retrospective
- Available at Project's Wiki
7️⃣ Sprint Review
- Single‑member pitch
- Deployed application demo showing highest‑value requirements delivered this sprint
Note: Sprint Review will be conducted during class time.