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.