# johancosta999/money_tracker architecture

> Architecture diagram of the GitHub repository johancosta999/money_tracker, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/johancosta999/money_tracker
- Repository: https://github.com/johancosta999/money_tracker

## Overview

Money Tracker is a personal-finance web app: users sign in, then record and review transactions, manage bank transactions, budgets, monthly planners, notes, and dashboard totals. The frontend routes users to these workflows and its API client attaches stored JWTs; the Express API authenticates protected requests and persists user-owned records. Planner code additionally calculates weekly spending and budgets. Edges reflect shown route wiring, imports, and README flows; several feature implementations and their frontend/API calls were not sampled, so those links are omitted rather than inferred.

Main entry points: [`frontend/src/App.jsx`](https://github.com/johancosta999/money_tracker/blob/main/frontend/src/App.jsx) (Route application), [`backend/controller/plannerController.js`](https://github.com/johancosta999/money_tracker/blob/main/backend/controller/plannerController.js) (Planner logic), [`backend/controller/transactionsController.js`](https://github.com/johancosta999/money_tracker/blob/main/backend/controller/transactionsController.js) (Transaction logic), [`backend/app.js`](https://github.com/johancosta999/money_tracker/blob/main/backend/app.js) (Express API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["Route application<br/>[App.jsx]"]
  node_auth_ui["Auth state<br/>[AuthProvider.jsx]"]
  node_api_client["API client<br/>[api.js]"]
  node_dashboard_ui["Dashboard<br/>[Dashboard.jsx]"]
  node_transactions_ui["Transactions UI<br/>[AddTransaction.jsx]"]
  node_planner_ui["Planner UI<br/>[Planner.jsx]"]
  node_planner_detail_ui["Planner details<br/>[PlannerDetails.jsx]"]
  node_other_pages["Other finance pages"]
end

subgraph group_identity["Identity and API"]
  node_server["Express API<br/>[app.js]"]
  node_auth_routes["Auth routes<br/>[authRoute.js]"]
  node_auth_controller["Auth controller<br/>[authController.js]"]
  node_auth_guard["JWT guard<br/>[authMiddleware.js]"]
  node_validation["Input validation<br/>[validation.js]"]
end

subgraph group_finance["Finance workflows"]
  node_planner_routes["Planner routes<br/>[plannerRoutes.js]"]
  node_planner_controller["Planner logic"]
  node_transaction_controller["Transaction logic"]
  node_feature_controllers["Other feature logic"]
end

subgraph group_storage["Data models"]
  node_planner_model[("Planner records<br/>[moneyPlanModel.js]")]
  node_transaction_model[("Transactions")]
  node_bank_model[("Bank transfers")]
  node_user_model[("User accounts<br/>[userModel.js]")]
  node_other_models[("Other records")]
end

node_user(("User"))
node_mongo[("MongoDB")]

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_dashboard_ui
node_app -->|"routes to"| node_transactions_ui
node_app -->|"routes to"| node_planner_ui
node_app -->|"routes to"| node_planner_detail_ui
node_app -->|"routes to"| node_other_pages
node_app -->|"reads auth"| node_auth_ui
node_auth_ui -->|"uses"| node_api_client
node_api_client -.->|"sends requests"| node_server
node_server -->|"mounts"| node_auth_routes
node_server -->|"mounts"| node_planner_routes
node_auth_routes -->|"dispatches"| node_auth_controller
node_auth_routes -->|"guards routes"| node_auth_guard
node_auth_controller -->|"reads/writes"| node_user_model
node_auth_controller -->|"validates with"| node_validation
node_planner_routes -->|"guards routes"| node_auth_guard
node_planner_routes -->|"dispatches"| node_planner_controller
node_planner_controller -->|"reads/writes"| node_planner_model
node_planner_controller -->|"aggregates spending"| node_transaction_model
node_planner_controller -->|"updates assignments"| node_bank_model
node_planner_controller -->|"validates with"| node_validation
node_transaction_controller -->|"reads/writes"| node_transaction_model
node_transaction_controller -->|"checks planner"| node_planner_model
node_transaction_controller -->|"validates with"| node_validation
node_feature_controllers -.->|"reads/writes"| node_other_models
node_planner_model -.->|"persists in"| node_mongo
node_transaction_model -.->|"persists in"| node_mongo
node_bank_model -.->|"persists in"| node_mongo
node_user_model -.->|"persists in"| node_mongo

click node_app "https://github.com/johancosta999/money_tracker/blob/main/frontend/src/App.jsx"
click node_auth_ui "https://github.com/johancosta999/money_tracker/blob/main/frontend/src/context/AuthProvider.jsx"
click node_api_client "https://github.com/johancosta999/money_tracker/blob/main/frontend/src/services/api.js"
click node_dashboard_ui "https://github.com/johancosta999/money_tracker/blob/main/frontend/src/pages/Dashboard.jsx"
click node_transactions_ui "https://github.com/johancosta999/money_tracker/blob/main/frontend/src/pages/AddTransaction.jsx"
click node_planner_ui "https://github.com/johancosta999/money_tracker/blob/main/frontend/src/pages/Planner.jsx"
click node_planner_detail_ui "https://github.com/johancosta999/money_tracker/blob/main/frontend/src/pages/PlannerDetails.jsx"
click node_other_pages "https://github.com/johancosta999/money_tracker/tree/main/frontend/src/pages"
click node_server "https://github.com/johancosta999/money_tracker/blob/main/backend/app.js"
click node_auth_routes "https://github.com/johancosta999/money_tracker/blob/main/backend/route/authRoute.js"
click node_auth_controller "https://github.com/johancosta999/money_tracker/blob/main/backend/controller/authController.js"
click node_auth_guard "https://github.com/johancosta999/money_tracker/blob/main/backend/middleware/authMiddleware.js"
click node_validation "https://github.com/johancosta999/money_tracker/blob/main/backend/utils/validation.js"
click node_planner_routes "https://github.com/johancosta999/money_tracker/blob/main/backend/route/plannerRoutes.js"
click node_planner_controller "https://github.com/johancosta999/money_tracker/blob/main/backend/controller/plannerController.js"
click node_transaction_controller "https://github.com/johancosta999/money_tracker/blob/main/backend/controller/transactionsController.js"
click node_feature_controllers "https://github.com/johancosta999/money_tracker/tree/main/backend/controller"
click node_planner_model "https://github.com/johancosta999/money_tracker/blob/main/backend/model/moneyPlanModel.js"
click node_transaction_model "https://github.com/johancosta999/money_tracker/blob/main/backend/model/transactionsModel.js"
click node_bank_model "https://github.com/johancosta999/money_tracker/blob/main/backend/model/bankTransfersModel.js"
click node_user_model "https://github.com/johancosta999/money_tracker/blob/main/backend/model/userModel.js"
click node_other_models "https://github.com/johancosta999/money_tracker/tree/main/backend/model"

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_auth_ui,node_api_client,node_dashboard_ui,node_transactions_ui,node_planner_ui,node_planner_detail_ui,node_other_pages,node_user toneBlue
class node_server,node_auth_routes,node_auth_controller,node_auth_guard,node_validation,node_mongo toneAmber
class node_planner_routes,node_planner_controller,node_transaction_controller,node_feature_controllers toneMint
class node_planner_model,node_transaction_model,node_bank_model,node_user_model,node_other_models toneRose
```

## Components

### Web application

- [Route application](https://github.com/johancosta999/money_tracker/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Auth state](https://github.com/johancosta999/money_tracker/blob/main/frontend/src/context/AuthProvider.jsx): `frontend/src/context/AuthProvider.jsx`
- [API client](https://github.com/johancosta999/money_tracker/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`
- [Dashboard](https://github.com/johancosta999/money_tracker/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [Transactions UI](https://github.com/johancosta999/money_tracker/blob/main/frontend/src/pages/AddTransaction.jsx): `frontend/src/pages/AddTransaction.jsx`
- [Planner UI](https://github.com/johancosta999/money_tracker/blob/main/frontend/src/pages/Planner.jsx): `frontend/src/pages/Planner.jsx`
- [Planner details](https://github.com/johancosta999/money_tracker/blob/main/frontend/src/pages/PlannerDetails.jsx): `frontend/src/pages/PlannerDetails.jsx`
- [Other finance pages](https://github.com/johancosta999/money_tracker/tree/main/frontend/src/pages): `frontend/src/pages`

### Identity and API

- [Express API](https://github.com/johancosta999/money_tracker/blob/main/backend/app.js): `backend/app.js`
- [Auth routes](https://github.com/johancosta999/money_tracker/blob/main/backend/route/authRoute.js): `backend/route/authRoute.js`
- [Auth controller](https://github.com/johancosta999/money_tracker/blob/main/backend/controller/authController.js): `backend/controller/authController.js`
- [JWT guard](https://github.com/johancosta999/money_tracker/blob/main/backend/middleware/authMiddleware.js): `backend/middleware/authMiddleware.js`
- [Input validation](https://github.com/johancosta999/money_tracker/blob/main/backend/utils/validation.js): `backend/utils/validation.js`

### Finance workflows

- [Planner routes](https://github.com/johancosta999/money_tracker/blob/main/backend/route/plannerRoutes.js): `backend/route/plannerRoutes.js`
- [Planner logic](https://github.com/johancosta999/money_tracker/blob/main/backend/controller/plannerController.js): `backend/controller/plannerController.js`
- [Transaction logic](https://github.com/johancosta999/money_tracker/blob/main/backend/controller/transactionsController.js): `backend/controller/transactionsController.js`
- [Other feature logic](https://github.com/johancosta999/money_tracker/tree/main/backend/controller): `backend/controller`

### Data models

- [Planner records](https://github.com/johancosta999/money_tracker/blob/main/backend/model/moneyPlanModel.js): `backend/model/moneyPlanModel.js`
- [Transactions](https://github.com/johancosta999/money_tracker/blob/main/backend/model/transactionsModel.js): `backend/model/transactionsModel.js`
- [Bank transfers](https://github.com/johancosta999/money_tracker/blob/main/backend/model/bankTransfersModel.js): `backend/model/bankTransfersModel.js`
- [User accounts](https://github.com/johancosta999/money_tracker/blob/main/backend/model/userModel.js): `backend/model/userModel.js`
- [Other records](https://github.com/johancosta999/money_tracker/tree/main/backend/model): `backend/model`

### Other components

- **User**
- **MongoDB**

## Connections

- User → Route application: uses (evidence: `frontend/src/App.jsx`)
- Route application → Dashboard: routes to (evidence: `frontend/src/App.jsx`)
- Route application → Transactions UI: routes to (evidence: `frontend/src/App.jsx`)
- Route application → Planner UI: routes to (evidence: `frontend/src/App.jsx`)
- Route application → Planner details: routes to (evidence: `frontend/src/App.jsx`)
- Route application → Other finance pages: routes to (evidence: `frontend/src/App.jsx`)
- Route application → Auth state: reads auth (evidence: `frontend/src/App.jsx`)
- Auth state → API client: uses (evidence: `frontend/src/context/AuthProvider.jsx`)
- API client → Express API: sends requests
- Express API → Auth routes: mounts (evidence: `backend/app.js`)
- Express API → Planner routes: mounts (evidence: `backend/app.js`)
- Auth routes → Auth controller: dispatches (evidence: `backend/route/authRoute.js`)
- Auth routes → JWT guard: guards routes (evidence: `backend/route/authRoute.js`)
- Auth controller → User accounts: reads/writes (evidence: `backend/controller/authController.js`)
- Auth controller → Input validation: validates with (evidence: `backend/controller/authController.js`)
- Planner routes → JWT guard: guards routes (evidence: `backend/route/plannerRoutes.js`)
- Planner routes → Planner logic: dispatches (evidence: `backend/route/plannerRoutes.js`)
- Planner logic → Planner records: reads/writes (evidence: `backend/controller/plannerController.js`)
- Planner logic → Transactions: aggregates spending (evidence: `backend/controller/plannerController.js`)
- Planner logic → Bank transfers: updates assignments (evidence: `backend/controller/plannerController.js`)
- Planner logic → Input validation: validates with (evidence: `backend/controller/plannerController.js`)
- Transaction logic → Transactions: reads/writes (evidence: `backend/controller/transactionsController.js`)
- Transaction logic → Planner records: checks planner (evidence: `backend/controller/transactionsController.js`)
- Transaction logic → Input validation: validates with (evidence: `backend/controller/transactionsController.js`)
- Other feature logic → Other records: reads/writes (evidence: `backend/controller/plannerController.js`)
- Planner records → MongoDB: persists in
- Transactions → MongoDB: persists in
- Bank transfers → MongoDB: persists in
- User accounts → MongoDB: persists in
