# juliosouzaneto/controle-despesas architecture

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

- Interactive diagram: https://gitdiagram.com/juliosouzaneto/controle-despesas
- Repository: https://github.com/juliosouzaneto/controle-despesas

## Overview

This is a Spring REST API for expense control, exposing account, expense, revenue, and expense-category endpoints. The visible workflow is an HTTP request entering a controller, which delegates to a service contract and returns a response; account operations additionally show service code reading or writing through a Mongo repository. Account, client, expense, and category models represent domain data. The README is empty, and implementation excerpts are limited: links to non-account service implementations and their persistence behavior are therefore omitted.

Main entry points: [`src/main/java/com/br/controledespesas/model/Expense.java`](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/model/Expense.java) (Expense model), [`src/main/java/com/br/controledespesas/controller/AccountController.java`](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/controller/AccountController.java) (Account endpoints), [`src/main/java/com/br/controledespesas/controller/CategoryExpensesController.java`](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/controller/CategoryExpensesController.java) (Category endpoints), [`src/main/java/com/br/controledespesas/controller/ExpensesController.java`](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/controller/ExpensesController.java) (Expense endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_account_controller["Account endpoints"]
  node_category_controller["Category endpoints"]
  node_expense_controller["Expense endpoints"]
  node_revenue_controller["Revenue endpoints"]
  node_account_service["Account service contract"]
  node_category_service["Category service contract"]
  node_expense_service["Expense service contract"]
  node_revenue_service["Revenue service contract"]
  node_account_impl["Account service implementation"]
  node_category_impl["Category service implementation"]
  node_expense_impl["Expense service implementation"]
  node_revenue_impl["Revenue service implementation"]
end

subgraph group_domain["Domain data"]
  node_account_model["Account model<br/>[Account.java]"]
  node_client_model["Client model<br/>[Client.java]"]
  node_expense_model["Expense model<br/>[Expense.java]"]
  node_category_model["Expense category model"]
end

subgraph group_storage["Account storage"]
  node_account_repo["Account repository"]
  node_mongodb[("MongoDB")]
end

node_client(("API caller"))

node_client -->|"sends requests"| node_account_controller
node_client -->|"sends requests"| node_category_controller
node_client -->|"sends requests"| node_expense_controller
node_client -->|"sends requests"| node_revenue_controller
node_account_controller -->|"delegates to"| node_account_service
node_category_controller -->|"delegates to"| node_category_service
node_expense_controller -->|"delegates to"| node_expense_service
node_revenue_controller -->|"delegates to"| node_revenue_service
node_account_service -.->|"implemented by"| node_account_impl
node_category_service -.->|"implemented by"| node_category_impl
node_expense_service -.->|"implemented by"| node_expense_impl
node_revenue_service -.->|"implemented by"| node_revenue_impl
node_account_impl -->|"reads and writes"| node_account_repo
node_account_repo -->|"stores accounts"| node_mongodb
node_account_model -->|"has client"| node_client_model
node_expense_model -->|"references account"| node_account_model
node_expense_model -->|"references category"| node_category_model

click node_account_controller "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/controller/AccountController.java"
click node_category_controller "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/controller/CategoryExpensesController.java"
click node_expense_controller "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/controller/ExpensesController.java"
click node_revenue_controller "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/controller/RevenuesController.java"
click node_account_service "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/AccountService.java"
click node_category_service "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/CategoryExpensesService.java"
click node_expense_service "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/ExpensesService.java"
click node_revenue_service "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/RevenuesService.java"
click node_account_impl "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/AccountServiceImpl.java"
click node_category_impl "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/CategoryExpensesServiceImpl.java"
click node_expense_impl "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/ExpensesServiceImpl.java"
click node_revenue_impl "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/RevenuesServiceImpl.java"
click node_account_model "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/model/Account.java"
click node_client_model "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/model/Client.java"
click node_expense_model "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/model/Expense.java"
click node_category_model "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/model/CategoryExpense.java"
click node_account_repo "https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/repository/AccountRepository.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_account_controller,node_category_controller,node_expense_controller,node_revenue_controller,node_account_service,node_category_service,node_expense_service,node_revenue_service,node_account_impl,node_category_impl,node_expense_impl,node_revenue_impl toneBlue
class node_account_model,node_client_model,node_expense_model,node_category_model toneAmber
class node_account_repo,node_mongodb,node_client toneMint
```

## Components

### REST API

- [Account endpoints](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/controller/AccountController.java): `src/main/java/com/br/controledespesas/controller/AccountController.java`
- [Category endpoints](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/controller/CategoryExpensesController.java): `src/main/java/com/br/controledespesas/controller/CategoryExpensesController.java`
- [Expense endpoints](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/controller/ExpensesController.java): `src/main/java/com/br/controledespesas/controller/ExpensesController.java`
- [Revenue endpoints](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/controller/RevenuesController.java): `src/main/java/com/br/controledespesas/controller/RevenuesController.java`
- [Account service contract](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/AccountService.java): `src/main/java/com/br/controledespesas/service/AccountService.java`
- [Category service contract](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/CategoryExpensesService.java): `src/main/java/com/br/controledespesas/service/CategoryExpensesService.java`
- [Expense service contract](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/ExpensesService.java): `src/main/java/com/br/controledespesas/service/ExpensesService.java`
- [Revenue service contract](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/RevenuesService.java): `src/main/java/com/br/controledespesas/service/RevenuesService.java`
- [Account service implementation](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/AccountServiceImpl.java): `src/main/java/com/br/controledespesas/service/AccountServiceImpl.java`
- [Category service implementation](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/CategoryExpensesServiceImpl.java): `src/main/java/com/br/controledespesas/service/CategoryExpensesServiceImpl.java`
- [Expense service implementation](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/ExpensesServiceImpl.java): `src/main/java/com/br/controledespesas/service/ExpensesServiceImpl.java`
- [Revenue service implementation](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/service/RevenuesServiceImpl.java): `src/main/java/com/br/controledespesas/service/RevenuesServiceImpl.java`

### Domain data

- [Account model](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/model/Account.java): `src/main/java/com/br/controledespesas/model/Account.java`
- [Client model](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/model/Client.java): `src/main/java/com/br/controledespesas/model/Client.java`
- [Expense model](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/model/Expense.java): `src/main/java/com/br/controledespesas/model/Expense.java`
- [Expense category model](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/model/CategoryExpense.java): `src/main/java/com/br/controledespesas/model/CategoryExpense.java`

### Account storage

- [Account repository](https://github.com/juliosouzaneto/controle-despesas/blob/master/src/main/java/com/br/controledespesas/repository/AccountRepository.java): `src/main/java/com/br/controledespesas/repository/AccountRepository.java`
- **MongoDB**

### Other components

- **API caller**

## Connections

- API caller → Account endpoints: sends requests (evidence: `src/main/java/com/br/controledespesas/controller/AccountController.java`)
- API caller → Category endpoints: sends requests (evidence: `src/main/java/com/br/controledespesas/controller/CategoryExpensesController.java`)
- API caller → Expense endpoints: sends requests (evidence: `src/main/java/com/br/controledespesas/controller/ExpensesController.java`)
- API caller → Revenue endpoints: sends requests (evidence: `src/main/java/com/br/controledespesas/controller/RevenuesController.java`)
- Account endpoints → Account service contract: delegates to (evidence: `src/main/java/com/br/controledespesas/controller/AccountController.java`)
- Category endpoints → Category service contract: delegates to (evidence: `src/main/java/com/br/controledespesas/controller/CategoryExpensesController.java`)
- Expense endpoints → Expense service contract: delegates to (evidence: `src/main/java/com/br/controledespesas/controller/ExpensesController.java`)
- Revenue endpoints → Revenue service contract: delegates to (evidence: `src/main/java/com/br/controledespesas/controller/RevenuesController.java`)
- Account service contract → Account service implementation: implemented by (evidence: `src/main/java/com/br/controledespesas/service/AccountServiceImpl.java`)
- Category service contract → Category service implementation: implemented by (evidence: `src/main/java/com/br/controledespesas/service/CategoryExpensesServiceImpl.java`)
- Expense service contract → Expense service implementation: implemented by (evidence: `src/main/java/com/br/controledespesas/service/ExpensesServiceImpl.java`)
- Revenue service contract → Revenue service implementation: implemented by (evidence: `src/main/java/com/br/controledespesas/service/RevenuesServiceImpl.java`)
- Account service implementation → Account repository: reads and writes (evidence: `src/main/java/com/br/controledespesas/service/AccountServiceImpl.java`)
- Account repository → MongoDB: stores accounts (evidence: `src/main/java/com/br/controledespesas/repository/AccountRepository.java`)
- Account model → Client model: has client (evidence: `src/main/java/com/br/controledespesas/model/Account.java`)
- Expense model → Account model: references account (evidence: `src/main/java/com/br/controledespesas/model/Expense.java`)
- Expense model → Expense category model: references category (evidence: `src/main/java/com/br/controledespesas/model/Expense.java`)
