# captainmmd1304/ai-powered-personal-finance-tracker architecture

> Architecture diagram of the GitHub repository captainmmd1304/ai-powered-personal-finance-tracker, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/captainmmd1304/ai-powered-personal-finance-tracker
- Repository: https://github.com/captainmmd1304/ai-powered-personal-finance-tracker

## Overview

This is a personal-finance tracker: users import CSV transactions, review them in a dashboard, and can reset stored data. The React app retrieves transactions from the Spring API and separately reads Python-generated spending summaries and forecasts. The README documents backend API capabilities and MySQL storage, but Java implementation excerpts were not provided, so internal backend call wiring is not inferred.

Main entry points: [`frontend/src/App.tsx`](https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/frontend/src/App.tsx) (Dashboard state), [`src/main/java/com/example/demo/controllers/TransactionController.java`](https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/src/main/java/com/example/demo/controllers/TransactionController.java) (Transaction API), [`analytics.py`](https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/analytics.py) (Spending analytics), [`frontend/src/components/FileUploader.tsx`](https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/frontend/src/components/FileUploader.tsx) (CSV uploader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Dashboard"]
  node_app["Dashboard state<br/>[App.tsx]"]
  node_uploader["CSV uploader<br/>[FileUploader.tsx]"]
  node_chart["Spending chart<br/>[SpendingChart.tsx]"]
  node_table["Transaction table"]
end

subgraph group_backend["Transaction API"]
  node_api["Transaction API"]
  node_service["Transaction service"]
  node_repository["Transaction repository"]
end

subgraph group_analytics["Analytics"]
  node_analytics["Spending analytics<br/>[analytics.py]"]
  node_insights["Insights JSON<br/>[data.json]"]
end

subgraph group_storage["Data"]
  node_mysql[("MySQL transactions")]
end

node_user(("Finance user"))

node_user -->|"uses"| node_app
node_app -->|"renders"| node_uploader
node_app -->|"renders"| node_chart
node_app -->|"renders"| node_table
node_uploader -->|"uploads CSV"| node_api
node_app -->|"fetches / resets"| node_api
node_app -->|"reads"| node_insights
node_analytics -->|"reads transactions"| node_mysql
node_analytics -->|"writes insights"| node_insights
node_api -->|"serves transactions"| node_mysql

click node_app "https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/frontend/src/App.tsx"
click node_uploader "https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/frontend/src/components/FileUploader.tsx"
click node_chart "https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/frontend/src/components/SpendingChart.tsx"
click node_table "https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/frontend/src/components/TransactionTable.tsx"
click node_api "https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/src/main/java/com/example/demo/controllers/TransactionController.java"
click node_service "https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/src/main/java/com/example/demo/services/TransactionService.java"
click node_repository "https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/src/main/java/com/example/demo/repositories/TransactionRepository.java"
click node_analytics "https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/analytics.py"
click node_insights "https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/frontend/public/data.json"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_uploader,node_chart,node_table,node_user toneBlue
class node_api,node_service,node_repository toneAmber
class node_analytics,node_insights toneMint
class node_mysql toneRose
```

## Components

### Dashboard

- [Dashboard state](https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/frontend/src/App.tsx): `frontend/src/App.tsx`
- [CSV uploader](https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/frontend/src/components/FileUploader.tsx): `frontend/src/components/FileUploader.tsx`
- [Spending chart](https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/frontend/src/components/SpendingChart.tsx): `frontend/src/components/SpendingChart.tsx`
- [Transaction table](https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/frontend/src/components/TransactionTable.tsx): `frontend/src/components/TransactionTable.tsx`

### Transaction API

- [Transaction API](https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/src/main/java/com/example/demo/controllers/TransactionController.java): `src/main/java/com/example/demo/controllers/TransactionController.java`
- [Transaction service](https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/src/main/java/com/example/demo/services/TransactionService.java): `src/main/java/com/example/demo/services/TransactionService.java`
- [Transaction repository](https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/src/main/java/com/example/demo/repositories/TransactionRepository.java): `src/main/java/com/example/demo/repositories/TransactionRepository.java`

### Analytics

- [Spending analytics](https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/analytics.py): `analytics.py`
- [Insights JSON](https://github.com/captainmmd1304/ai-powered-personal-finance-tracker/blob/master/frontend/public/data.json): `frontend/public/data.json`

### Data

- **MySQL transactions**

### Other components

- **Finance user**

## Connections

- Finance user → Dashboard state: uses
- Dashboard state → CSV uploader: renders
- Dashboard state → Spending chart: renders
- Dashboard state → Transaction table: renders
- CSV uploader → Transaction API: uploads CSV
- Dashboard state → Transaction API: fetches / resets
- Dashboard state → Insights JSON: reads
- Spending analytics → MySQL transactions: reads transactions
- Spending analytics → Insights JSON: writes insights
- Transaction API → MySQL transactions: serves transactions
