# sriram-118/smart_expense_tracker architecture

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

- Interactive diagram: https://gitdiagram.com/sriram-118/smart_expense_tracker
- Repository: https://github.com/sriram-118/smart_expense_tracker

## Overview

Smart Expense Tracker is a React client and Spring Boot API for registering users, recording and categorizing expenses, and reviewing spending analytics. Users authenticate, manage expense and category records, and view dashboard summaries and trends; protected requests are handled through JWT-based security. The graph follows sampled controller, service, repository, and client-hook code. Analytics and some frontend-to-backend wiring are included from README capabilities and the file tree, not inspected implementation, so uncertain call details are omitted.

Main entry points: [`frontend/src/api`](https://github.com/sriram-118/smart_expense_tracker/tree/main/frontend/src/api) (API clients), [`backend/src/main/java/com/expense/tracker/repository`](https://github.com/sriram-118/smart_expense_tracker/tree/main/backend/src/main/java/com/expense/tracker/repository) (Persistence repositories), [`frontend/src/App.jsx`](https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/App.jsx) (Routes and shell), [`backend/src/main/java/com/expense/tracker/security`](https://github.com/sriram-118/smart_expense_tracker/tree/main/backend/src/main/java/com/expense/tracker/security) (JWT request security)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["React client"]
  node_app["Routes and shell<br/>[App.jsx]"]
  node_auth_ui["Sign in and register<br/>[Login.jsx]"]
  node_dashboard["Dashboard and analytics<br/>[Dashboard.jsx]"]
  node_expense_ui["Expense manager<br/>[ExpenseList.jsx]"]
  node_category_ui["Category manager<br/>[CategoryPage.jsx]"]
  node_auth_context["Session state<br/>[AuthContext.jsx]"]
  node_expense_hook["Expense state<br/>[useExpenses.js]"]
  node_category_hook["Category state<br/>[useCategories.js]"]
  node_analytics_hook["Analytics state<br/>[useAnalytics.js]"]
  node_client_api["API clients"]
end

subgraph group_api["REST API"]
  node_auth_controller["Authentication routes"]
  node_expense_controller["Expense routes"]
  node_category_controller["Category routes"]
  node_analytics_controller["Analytics routes"]
end

subgraph group_domain["Expense domain"]
  node_expense_service["Expense operations"]
  node_category_service["Category operations"]
  node_analytics_service["Spending aggregates"]
  node_repositories["Persistence repositories"]
end

subgraph group_security["Identity and security"]
  node_auth_service["Account and tokens<br/>[AuthService.java]"]
  node_jwt_security["JWT request security"]
end

node_user(("User"))
node_mysql[("MySQL database")]

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_auth_ui
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_expense_ui
node_app -->|"routes to"| node_category_ui
node_auth_ui -->|"updates session"| node_auth_context
node_expense_ui -->|"manages expenses"| node_expense_hook
node_category_ui -->|"manages categories"| node_category_hook
node_dashboard -->|"loads analytics"| node_analytics_hook
node_expense_hook -->|"calls expense API"| node_client_api
node_category_hook -->|"calls category API"| node_client_api
node_analytics_hook -->|"calls analytics API"| node_client_api
node_auth_context -->|"calls auth API"| node_client_api
node_client_api -->|"sends auth requests"| node_auth_controller
node_client_api -->|"sends expense requests"| node_expense_controller
node_client_api -->|"sends category requests"| node_category_controller
node_client_api -->|"sends analytics requests"| node_analytics_controller
node_auth_controller -->|"invokes"| node_auth_service
node_expense_controller -->|"invokes"| node_expense_service
node_category_controller -->|"invokes"| node_category_service
node_analytics_controller -->|"invokes"| node_analytics_service
node_expense_service -->|"reads and writes"| node_repositories
node_category_service -->|"reads and writes"| node_repositories
node_analytics_service -->|"queries totals"| node_repositories
node_auth_service -->|"reads and writes"| node_repositories
node_jwt_security -->|"loads user"| node_repositories
node_repositories -->|"persists records"| node_mysql
node_jwt_security -->|"authenticates requests"| node_expense_controller
node_jwt_security -->|"authenticates requests"| node_category_controller
node_jwt_security -->|"authenticates requests"| node_analytics_controller

click node_app "https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/App.jsx"
click node_auth_ui "https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/pages/Login.jsx"
click node_dashboard "https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/pages/Dashboard.jsx"
click node_expense_ui "https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/pages/ExpenseList.jsx"
click node_category_ui "https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/pages/CategoryPage.jsx"
click node_auth_context "https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/context/AuthContext.jsx"
click node_expense_hook "https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/hooks/useExpenses.js"
click node_category_hook "https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/hooks/useCategories.js"
click node_analytics_hook "https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/hooks/useAnalytics.js"
click node_client_api "https://github.com/sriram-118/smart_expense_tracker/tree/main/frontend/src/api"
click node_auth_controller "https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/controller/AuthController.java"
click node_expense_controller "https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/controller/ExpenseController.java"
click node_category_controller "https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/controller/CategoryController.java"
click node_analytics_controller "https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/controller/AnalyticsController.java"
click node_auth_service "https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/service/AuthService.java"
click node_jwt_security "https://github.com/sriram-118/smart_expense_tracker/tree/main/backend/src/main/java/com/expense/tracker/security"
click node_expense_service "https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/service/ExpenseService.java"
click node_category_service "https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/service/CategoryService.java"
click node_analytics_service "https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/service/AnalyticsService.java"
click node_repositories "https://github.com/sriram-118/smart_expense_tracker/tree/main/backend/src/main/java/com/expense/tracker/repository"

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_dashboard,node_expense_ui,node_category_ui,node_auth_context,node_expense_hook,node_category_hook,node_analytics_hook,node_client_api,node_user toneBlue
class node_auth_controller,node_expense_controller,node_category_controller,node_analytics_controller,node_mysql toneAmber
class node_expense_service,node_category_service,node_analytics_service,node_repositories toneMint
class node_auth_service,node_jwt_security toneRose
```

## Components

### React client

- [Routes and shell](https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Sign in and register](https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/pages/Login.jsx): `frontend/src/pages/Login.jsx`
- [Dashboard and analytics](https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [Expense manager](https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/pages/ExpenseList.jsx): `frontend/src/pages/ExpenseList.jsx`
- [Category manager](https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/pages/CategoryPage.jsx): `frontend/src/pages/CategoryPage.jsx`
- [Session state](https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Expense state](https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/hooks/useExpenses.js): `frontend/src/hooks/useExpenses.js`
- [Category state](https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/hooks/useCategories.js): `frontend/src/hooks/useCategories.js`
- [Analytics state](https://github.com/sriram-118/smart_expense_tracker/blob/main/frontend/src/hooks/useAnalytics.js): `frontend/src/hooks/useAnalytics.js`
- [API clients](https://github.com/sriram-118/smart_expense_tracker/tree/main/frontend/src/api): `frontend/src/api`

### REST API

- [Authentication routes](https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/controller/AuthController.java): `backend/src/main/java/com/expense/tracker/controller/AuthController.java`
- [Expense routes](https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/controller/ExpenseController.java): `backend/src/main/java/com/expense/tracker/controller/ExpenseController.java`
- [Category routes](https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/controller/CategoryController.java): `backend/src/main/java/com/expense/tracker/controller/CategoryController.java`
- [Analytics routes](https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/controller/AnalyticsController.java): `backend/src/main/java/com/expense/tracker/controller/AnalyticsController.java`

### Expense domain

- [Expense operations](https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/service/ExpenseService.java): `backend/src/main/java/com/expense/tracker/service/ExpenseService.java`
- [Category operations](https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/service/CategoryService.java): `backend/src/main/java/com/expense/tracker/service/CategoryService.java`
- [Spending aggregates](https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/service/AnalyticsService.java): `backend/src/main/java/com/expense/tracker/service/AnalyticsService.java`
- [Persistence repositories](https://github.com/sriram-118/smart_expense_tracker/tree/main/backend/src/main/java/com/expense/tracker/repository): `backend/src/main/java/com/expense/tracker/repository`

### Identity and security

- [Account and tokens](https://github.com/sriram-118/smart_expense_tracker/blob/main/backend/src/main/java/com/expense/tracker/service/AuthService.java): `backend/src/main/java/com/expense/tracker/service/AuthService.java`
- [JWT request security](https://github.com/sriram-118/smart_expense_tracker/tree/main/backend/src/main/java/com/expense/tracker/security): `backend/src/main/java/com/expense/tracker/security`

### Other components

- **User**
- **MySQL database**

## Connections

- User → Routes and shell: uses
- Routes and shell → Sign in and register: routes to
- Routes and shell → Dashboard and analytics: routes to
- Routes and shell → Expense manager: routes to
- Routes and shell → Category manager: routes to
- Sign in and register → Session state: updates session
- Expense manager → Expense state: manages expenses
- Category manager → Category state: manages categories
- Dashboard and analytics → Analytics state: loads analytics
- Expense state → API clients: calls expense API
- Category state → API clients: calls category API
- Analytics state → API clients: calls analytics API
- Session state → API clients: calls auth API
- API clients → Authentication routes: sends auth requests
- API clients → Expense routes: sends expense requests
- API clients → Category routes: sends category requests
- API clients → Analytics routes: sends analytics requests
- Authentication routes → Account and tokens: invokes
- Expense routes → Expense operations: invokes
- Category routes → Category operations: invokes
- Analytics routes → Spending aggregates: invokes
- Expense operations → Persistence repositories: reads and writes
- Category operations → Persistence repositories: reads and writes
- Spending aggregates → Persistence repositories: queries totals
- Account and tokens → Persistence repositories: reads and writes
- JWT request security → Persistence repositories: loads user
- Persistence repositories → MySQL database: persists records
- JWT request security → Expense routes: authenticates requests
- JWT request security → Category routes: authenticates requests
- JWT request security → Analytics routes: authenticates requests
