Deliverable 3 - betoooo08/MyFinPlanner GitHub Wiki

Deliverable 3: MVP

1. Architecture & Data

1.1 Deployment Diagram

Below is the updated deployment diagram, considering the requirements implemented in this sprint.

Deployment Diagram:
DeploymentModelF drawio (2)

Changes made:

  • Se reemplazó el bloque “Bootstrap SERVER” por un dispositivo “Static Files” dedicado para servir CSS/JS
  • Se externalizó la conexión con OpenAI a un nodo “OpenAI API” usando .env y la variable SECRET_KEY
  • Se renombró el bloque de base de datos de “SQLite3” a “SQLite” para ajustarse a la configuración real
  • Se agrupó el conjunto de apps (Accounts, Finances, Investments, Analytics) dentro de “MyFinPlanner Django Project”
  • Se etiquetaron los enlaces: HTTP para cliente-servidor, Static Files para archivos estáticos y .env para variables sensibles
  • Se mejoró la coherencia visual y organizativa para reflejar con precisión la arquitectura de despliegue en GCP

1.2 Component Diagram

This diagram represents the software components and their dependencies. Below is the updated component diagram:

Component Diagram:
image

Changes made:

  • Se unificaron los flujos principales entre Accounts, Finances, Investments y Analytics para reflejar el recorrido de datos al autenticarse y operar
  • Se diferenció visualmente el flujo “hacia adelante” (flechas negras) de la retroalimentación de datos (flechas naranjas)
  • Se ajustaron las dependencias internas de funcionalidades (p. ej. edición de transacciones, presupuestos, seguimiento de inversiones, análisis AI)
  • Se mejoró la claridad general y la consistencia de colores en el diagrama

1.3 Data Model

The relational database model was refined to support core financial functionalities and user interactions, including structured handling of budgets, transactions, goals, investments, reports, and AI-generated insights.

Entity-Relationship Diagram (ERD):
Data Model

Diagram with Apps division:

Data Model (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
email 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

Changes made:

  1. Transaction Model:
  • Changed category field from a simple CharField to a ForeignKey relationship with the Category model
  • This enables proper categorization and reporting of transactions as well as proper connection with Budgets
  • Allows for better data integrity and consistency
  1. Budget Model:
  • Changed category field from a simple CharField to a ForeignKey relationship with the Category model
  • This enables proper tracking of budget categories
  • Allows for consistent reporting across transactions and budgets

Signal Method Implementation (def validate_and_update_budget):

  • Added a pre_save signal on Transaction model to validate and update budgets
  • When an expense transaction is saved, it checks if there's enough budget
  • If the expense would exceed the budget, it raises a ValidationError
  • Otherwise, it updates the spent amount in the related budget
  1. GoalContribution and Goals Model:
  • Enhanced save method to validate that contributions don't exceed the goal's target amount
  • Automatically updates the goal's current_amount when a contribution is saved
  • Ensures data integrity between goals and their contributions
  • Atribute Monthly Contribution in Goals Model deleted as goals will not be managed by monthly contributions, instead, a goal contribution entity is added to add money whenever the users decides to
  1. Investments and InvestmentSymbol Model:
  • The Investment app has been refactored into two separate models: Investment and InvestmentSymbol. This change improves data integrity and better aligns with the integration of the FinnHub API for real-time stock and crypto symbol retrieval.

  • Each Investment now references a single InvestmentSymbol, allowing a clear and consistent link between user-owned assets and their corresponding financial data.

  • Irrelevant attributes such as purchaseDate and symbol (as an image-type attribute) were removed as they were irrelevant for the project

  • A new type attribute was added to the InvestmentSymbol model (e.g., stock, crypto) to enable more effective categorization and filtering of investment types.

  1. AIInsight Model
  • The AIInsight model was created to store and manage the financial insights generated by the open AI Chat GPT Model.

  • Each record stores the prompt sent to the AI and the response received.

  • A timestamp is included to track when each insight was generated.

  • The insight_type field is used to differentiate the purpose or context of the insight (e.g., related to Goals, Transactions or Budgets).

🔄 Changes from the Previous Model:

  • Removed the fields Anomaly_Detected and Recommended_Action, as these are now handled contextually within the AI response.

  • Renamed attributes for clarity and consistency with the Django model (Query → prompt)

  • Streamlined the model to better support integration with the OpenAI API and simplify data handling.

    This structure improves traceability and allows us to categorize and personalize insights based on different user interactions within the platform.

  1. Reports and User Model

    • The Report and User models remain unchanged, as no additional development has been carried out in these areas during this sprint. These models are scheduled to be addressed in Sprint 04, where any necessary modifications or improvements will be implemented based on the sprint requirements or expected functionality.

2. Corporate Image

  • Logo:

Logo MyFinPlanner

  • Slogan:
    "Make Every Peso Count"

  • Color Palette

AdobeColor-My Color Theme (3)

  • Main Interfaces:

Screens where the brand identity is clearly integrated:

Home Screen: image

image

On the Home Screen, the logo, slogan, mission, and vision are prominently displayed and well-integrated, as shown in the screenshots above.

Across the main interfaces,The brand color palette is clearly applied throughout the design, reinforcing the project's visual identity.

Main dashboard screen:
image

Transactions screen:
image

Budgets screen

image

Investments screen

image

Goals screen:
image

USABILITY CRITERIA

Usability Principle Rating (1 to 5) Notes
1) Visibility of system status 3 The system does not clearly show the status of user actions.
2) Match between system and the real world (User language) 4 The language is clear and user-oriented but could be improved.
3) User control and freedom 5 Users have clear options for navigating and performing actions.
4) Consistency and standards 4 The interface follows common standards, though some areas could improve.
5) Error prevention 5 Validations are implemented to prevent form-related errors.
6) Recognition rather than recall 5 Visual elements reduce the user's memory load effectively.
7) Flexibility and efficiency of use 3 Lacks advanced shortcuts for experienced users.
8) Aesthetic and minimalist design 5 The design is clean, modern, and focused on essentials.
9) Help users recognize, diagnose, and recover from errors 3 Error messages are basic and could be more descriptive.
10) Help and documentation 2 There is no integrated help or documentation in the interface.

3. Repository

  • GitHub Repository:
    Link to the repository

  • Commits:
    All team members have contributed with clear, descriptive commits.
    Check the commit history for details.

  • requirements.txt:
    Requirements for the project are available at requierements.txt in the repository code

  • Readme.md: Readme.md updated with clear instructions for running the program


5. Project Management

5.1 Backlog

The backlog has been successfully updated and is available in the project repository. It includes all requirements in the requested structure, each with well-defined acceptance criteria, updated status, assigned tasks, and designated team members.

All requirements from Sprint 03 have been moved to the "Done" section accordingly.


5.2 Weekly Meetings

Weekly Meetings available at Projects's Wiki


5.3 Retrospective

Retrospective available at Project's Wiki


5.4 Video

https://youtu.be/DnFV_mBm5D8


6. Sprint Review (In Class)

Pitch: Delivered by one team member.

Live Demo: Demonstrated key features such as:

  • Tracking income and expenses
  • Budget category creation and spending tracking
  • Goal creation with AI-generated financial insights