# haneesh3768/moneymanager architecture

> Architecture diagram of the GitHub repository haneesh3768/moneymanager, 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/haneesh3768/moneymanager
- Repository: https://github.com/haneesh3768/moneymanager

## Overview

This is a Spring-based personal expense tracker API. Users register and activate accounts, authenticate for a JWT, then manage categories, income, and expenses; dashboard and filter endpoints summarize or query those records. Scheduled notification services send email reminders and expense summaries. The graph reflects sampled controller and service calls; major unsampled modules are included from the tree, but their internal wiring is not assumed.

Main entry points: [`src/main/java/com/project/expensetracker/service/ExpenseService.java`](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/ExpenseService.java) (Expense service), [`src/main/java/com/project/expensetracker/service/ProfileService.java`](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/ProfileService.java) (Profile service), [`src/main/java/com/project/expensetracker/service/IncomeService.java`](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/IncomeService.java) (Income service), [`src/main/java/com/project/expensetracker/service/DashboardService.java`](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/DashboardService.java) (Dashboard service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API"]
  node_profile_api["Profile API"]
  node_expense_api["Expense API"]
  node_income_api["Income API"]
  node_category_api["Category API"]
  node_dashboard_api["Dashboard API"]
  node_filter_api["Filter API"]
end

subgraph group_domain["Finance domain"]
  node_expense_service["Expense service"]
  node_income_service["Income service<br/>[IncomeService.java]"]
  node_category_service["Category service"]
  node_dashboard_service["Dashboard service"]
end

subgraph group_data["Persistence"]
  node_profile_repo["Profile repository"]
  node_expense_repo["Expense repository"]
  node_income_repo["Income repository"]
  node_category_repo["Category repository"]
  node_database[("Application database")]
end

subgraph group_identity["Identity and messaging"]
  node_profile_service["Profile service"]
  node_notification_service["Notification service"]
  node_email_service["Email service<br/>[EmailService.java]"]
end

node_user(("API user"))
node_mail{{"Email provider"}}

node_user -->|"sends requests"| node_profile_api
node_user -->|"sends requests"| node_expense_api
node_user -->|"sends requests"| node_income_api
node_user -->|"sends requests"| node_category_api
node_user -->|"requests summary"| node_dashboard_api
node_user -->|"submits filters"| node_filter_api
node_profile_api -->|"calls"| node_profile_service
node_expense_api -->|"calls"| node_expense_service
node_income_api -->|"calls"| node_income_service
node_category_api -->|"calls"| node_category_service
node_dashboard_api -->|"calls"| node_dashboard_service
node_filter_api -->|"filters income"| node_income_service
node_filter_api -->|"filters expenses"| node_expense_service
node_profile_service -->|"reads and saves"| node_profile_repo
node_profile_service -->|"sends activation"| node_email_service
node_expense_service -->|"gets current user"| node_profile_service
node_expense_service -->|"loads category"| node_category_repo
node_expense_service -->|"queries and saves"| node_expense_repo
node_income_service -->|"gets current user"| node_profile_service
node_income_service -->|"loads category"| node_category_repo
node_income_service -->|"queries and saves"| node_income_repo
node_category_service -->|"gets current user"| node_profile_service
node_category_service -->|"queries and saves"| node_category_repo
node_dashboard_service -->|"gets current user"| node_profile_service
node_dashboard_service -->|"gets income totals"| node_income_service
node_dashboard_service -->|"gets expense totals"| node_expense_service
node_notification_service -->|"loads profiles"| node_profile_repo
node_notification_service -->|"gets daily expenses"| node_expense_service
node_notification_service -->|"sends notices"| node_email_service
node_email_service -.->|"delivers email"| node_mail
node_profile_repo -->|"reads and writes"| node_database
node_expense_repo -->|"reads and writes"| node_database
node_income_repo -->|"reads and writes"| node_database
node_category_repo -->|"reads and writes"| node_database

click node_profile_api "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/controller/ProfileController.java"
click node_expense_api "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/controller/ExpenseController.java"
click node_income_api "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/controller/IncomeController.java"
click node_category_api "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/controller/CategoryController.java"
click node_dashboard_api "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/controller/DashboardController.java"
click node_filter_api "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/controller/FilterController.java"
click node_profile_service "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/ProfileService.java"
click node_expense_service "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/ExpenseService.java"
click node_income_service "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/IncomeService.java"
click node_category_service "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/CategoryService.java"
click node_dashboard_service "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/DashboardService.java"
click node_notification_service "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/NotificationService.java"
click node_email_service "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/EmailService.java"
click node_profile_repo "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/repository/ProfileRepository.java"
click node_expense_repo "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/repository/ExpenseRepository.java"
click node_income_repo "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/repository/IncomeRepository.java"
click node_category_repo "https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/repository/CategoryRepository.java"

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_profile_api,node_expense_api,node_income_api,node_category_api,node_dashboard_api,node_filter_api,node_user toneBlue
class node_expense_service,node_income_service,node_category_service,node_dashboard_service toneAmber
class node_profile_repo,node_expense_repo,node_income_repo,node_category_repo,node_database toneMint
class node_profile_service,node_notification_service,node_email_service toneRose
class node_mail toneIndigo
```

## Components

### API

- [Profile API](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/controller/ProfileController.java): `src/main/java/com/project/expensetracker/controller/ProfileController.java`
- [Expense API](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/controller/ExpenseController.java): `src/main/java/com/project/expensetracker/controller/ExpenseController.java`
- [Income API](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/controller/IncomeController.java): `src/main/java/com/project/expensetracker/controller/IncomeController.java`
- [Category API](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/controller/CategoryController.java): `src/main/java/com/project/expensetracker/controller/CategoryController.java`
- [Dashboard API](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/controller/DashboardController.java): `src/main/java/com/project/expensetracker/controller/DashboardController.java`
- [Filter API](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/controller/FilterController.java): `src/main/java/com/project/expensetracker/controller/FilterController.java`

### Finance domain

- [Expense service](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/ExpenseService.java): `src/main/java/com/project/expensetracker/service/ExpenseService.java`
- [Income service](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/IncomeService.java): `src/main/java/com/project/expensetracker/service/IncomeService.java`
- [Category service](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/CategoryService.java): `src/main/java/com/project/expensetracker/service/CategoryService.java`
- [Dashboard service](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/DashboardService.java): `src/main/java/com/project/expensetracker/service/DashboardService.java`

### Persistence

- [Profile repository](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/repository/ProfileRepository.java): `src/main/java/com/project/expensetracker/repository/ProfileRepository.java`
- [Expense repository](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/repository/ExpenseRepository.java): `src/main/java/com/project/expensetracker/repository/ExpenseRepository.java`
- [Income repository](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/repository/IncomeRepository.java): `src/main/java/com/project/expensetracker/repository/IncomeRepository.java`
- [Category repository](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/repository/CategoryRepository.java): `src/main/java/com/project/expensetracker/repository/CategoryRepository.java`
- **Application database**

### Identity and messaging

- [Profile service](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/ProfileService.java): `src/main/java/com/project/expensetracker/service/ProfileService.java`
- [Notification service](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/NotificationService.java): `src/main/java/com/project/expensetracker/service/NotificationService.java`
- [Email service](https://github.com/haneesh3768/moneymanager/blob/main/src/main/java/com/project/expensetracker/service/EmailService.java): `src/main/java/com/project/expensetracker/service/EmailService.java`

### Other components

- **API user**
- **Email provider**

## Connections

- API user → Profile API: sends requests
- API user → Expense API: sends requests
- API user → Income API: sends requests
- API user → Category API: sends requests
- API user → Dashboard API: requests summary
- API user → Filter API: submits filters
- Profile API → Profile service: calls
- Expense API → Expense service: calls
- Income API → Income service: calls
- Category API → Category service: calls
- Dashboard API → Dashboard service: calls
- Filter API → Income service: filters income
- Filter API → Expense service: filters expenses
- Profile service → Profile repository: reads and saves
- Profile service → Email service: sends activation
- Expense service → Profile service: gets current user
- Expense service → Category repository: loads category
- Expense service → Expense repository: queries and saves
- Income service → Profile service: gets current user
- Income service → Category repository: loads category
- Income service → Income repository: queries and saves
- Category service → Profile service: gets current user
- Category service → Category repository: queries and saves
- Dashboard service → Profile service: gets current user
- Dashboard service → Income service: gets income totals
- Dashboard service → Expense service: gets expense totals
- Notification service → Profile repository: loads profiles
- Notification service → Expense service: gets daily expenses
- Notification service → Email service: sends notices
- Email service → Email provider: delivers email
- Profile repository → Application database: reads and writes
- Expense repository → Application database: reads and writes
- Income repository → Application database: reads and writes
- Category repository → Application database: reads and writes
