# caio26gualberto/noazul architecture

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

- Interactive diagram: https://gitdiagram.com/caio26gualberto/noazul
- Repository: https://github.com/caio26gualberto/noazul
- Video tour (about a minute): https://gitdiagram.com/caio26gualberto/noazul/video

## Overview

NoAzul is a personal-finance app for viewing card and bank-account spending, with login, profile management, and monthly metrics. The main workflow is: a user signs in, connects a bank through Pluggy, and views imported transactions and summaries in the site; the README says data is refreshed daily at 08:00. Admin authorization and job monitoring are distinct capabilities. The graph combines documented capabilities with source-index and excerpt evidence; several domain services and worker internals were not sampled, so uncertain links are dashed.

Main entry points: [`frontend/src/app/api/api-client.ts`](https://github.com/caio26gualberto/noazul/blob/main/frontend/src/app/api/api-client.ts) (API client), [`api/src/NoAzul.Infra.Data/Context/AppDbContext.cs`](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Infra.Data/Context/AppDbContext.cs) (Postgres database), [`frontend/src/app/app.routes.ts`](https://github.com/caio26gualberto/noazul/blob/main/frontend/src/app/app.routes.ts) (App routes), [`api/src/NoAzul.Infra.Data/Repositories/Repository.cs`](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Infra.Data/Repositories/Repository.cs) (Data repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_routes["App routes<br/>[app.routes.ts]"]
  node_authui["Auth service<br/>[auth.service.ts]"]
  node_finui["Finance service<br/>[finance.service.ts]"]
  node_finpages["Finance pages"]
  node_profilepage["Profile page<br/>[profile-page.ts]"]
  node_apiclient["API client<br/>[api-client.ts]"]
end

subgraph group_api["API and application"]
  node_authcontroller["Auth endpoints<br/>[AuthController.cs]"]
  node_bankcontroller["Bank endpoints"]
  node_txcontroller["Transaction endpoints"]
  node_profilecontroller["Profile endpoints"]
  node_admincontroller["Admin endpoints"]
  node_bankapp["Bank connection service"]
  node_txapp["Transaction service"]
  node_adminjobs["Job administration"]
end

subgraph group_identity["Identity and access"]
  node_authapp["Authentication service<br/>[AuthAppService.cs]"]
  node_authinfra["Identity provider"]
  node_authzapp["Authorization service"]
end

subgraph group_datajobs["Data and synchronization"]
  node_pluggy["Pluggy client<br/>[PluggyClient.cs]"]
  node_workers["Bank sync jobs<br/>[Triggers]"]
  node_repository["Data repository<br/>[Repository.cs]"]
  node_database[("Postgres database<br/>[AppDbContext.cs]")]
end

node_person(("User"))

node_person -->|"uses"| node_routes
node_routes -->|"routes to"| node_authui
node_routes -->|"routes to"| node_finpages
node_routes -->|"routes to"| node_profilepage
node_authui -->|"calls"| node_apiclient
node_finui -->|"calls"| node_apiclient
node_apiclient -.->|"sends requests"| node_authcontroller
node_apiclient -.->|"sends requests"| node_bankcontroller
node_apiclient -.->|"sends requests"| node_txcontroller
node_apiclient -.->|"sends requests"| node_profilecontroller
node_authcontroller -->|"calls"| node_authapp
node_authapp -->|"authenticates via"| node_authinfra
node_authinfra -->|"persists tokens"| node_database
node_bankcontroller -->|"calls"| node_bankapp
node_txcontroller -.->|"calls"| node_txapp
node_profilecontroller -.->|"uses"| node_repository
node_bankapp -.->|"integrates with"| node_pluggy
node_workers -.->|"syncs from"| node_pluggy
node_workers -.->|"stores updates"| node_database
node_txapp -.->|"queries"| node_repository
node_repository -->|"reads and writes"| node_database
node_admincontroller -->|"calls"| node_authzapp
node_authzapp -.->|"records changes"| node_database
node_adminjobs -.->|"tracks runs"| node_database

click node_routes "https://github.com/caio26gualberto/noazul/blob/main/frontend/src/app/app.routes.ts"
click node_authui "https://github.com/caio26gualberto/noazul/blob/main/frontend/src/app/auth/auth.service.ts"
click node_finui "https://github.com/caio26gualberto/noazul/blob/main/frontend/src/app/finance/finance.service.ts"
click node_finpages "https://github.com/caio26gualberto/noazul/tree/main/frontend/src/app/pages"
click node_profilepage "https://github.com/caio26gualberto/noazul/blob/main/frontend/src/app/pages/profile/profile-page.ts"
click node_apiclient "https://github.com/caio26gualberto/noazul/blob/main/frontend/src/app/api/api-client.ts"
click node_authcontroller "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Api/Controllers/AuthController.cs"
click node_bankcontroller "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Api/Controllers/BankConnectionsController.cs"
click node_txcontroller "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Api/Controllers/TransactionsController.cs"
click node_profilecontroller "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Api/Controllers/ProfileController.cs"
click node_admincontroller "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Api/Controllers/Admin/AuthorizationController.cs"
click node_authapp "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Application/Auth/AuthAppService.cs"
click node_authinfra "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Infra.Data/Identity/AuthenticateService/AuthenticateService.cs"
click node_authzapp "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Application/Authorizations/AuthorizationAppService.cs"
click node_bankapp "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Application/BankConnections/BankConnectionAppService.cs"
click node_txapp "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Application/Transactions/TransactionAppService.cs"
click node_pluggy "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Infra.Data/Pluggy/PluggyClient.cs"
click node_workers "https://github.com/caio26gualberto/noazul/tree/main/api/src/NoAzul.Workers/Triggers"
click node_repository "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Infra.Data/Repositories/Repository.cs"
click node_database "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Infra.Data/Context/AppDbContext.cs"
click node_adminjobs "https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Application/BackgroundJobs/BackgroundJobAppService.cs"

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_routes,node_authui,node_finui,node_finpages,node_profilepage,node_apiclient,node_person toneBlue
class node_authcontroller,node_bankcontroller,node_txcontroller,node_profilecontroller,node_admincontroller,node_bankapp,node_txapp,node_adminjobs toneAmber
class node_authapp,node_authinfra,node_authzapp toneMint
class node_pluggy,node_workers,node_repository,node_database toneRose
```

## Components

### Web application

- [App routes](https://github.com/caio26gualberto/noazul/blob/main/frontend/src/app/app.routes.ts): `frontend/src/app/app.routes.ts`
- [Auth service](https://github.com/caio26gualberto/noazul/blob/main/frontend/src/app/auth/auth.service.ts): `frontend/src/app/auth/auth.service.ts`
- [Finance service](https://github.com/caio26gualberto/noazul/blob/main/frontend/src/app/finance/finance.service.ts): `frontend/src/app/finance/finance.service.ts`
- [Finance pages](https://github.com/caio26gualberto/noazul/tree/main/frontend/src/app/pages): `frontend/src/app/pages`
- [Profile page](https://github.com/caio26gualberto/noazul/blob/main/frontend/src/app/pages/profile/profile-page.ts): `frontend/src/app/pages/profile/profile-page.ts`
- [API client](https://github.com/caio26gualberto/noazul/blob/main/frontend/src/app/api/api-client.ts): `frontend/src/app/api/api-client.ts`

### API and application

- [Auth endpoints](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Api/Controllers/AuthController.cs): `api/src/NoAzul.Api/Controllers/AuthController.cs`
- [Bank endpoints](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Api/Controllers/BankConnectionsController.cs): `api/src/NoAzul.Api/Controllers/BankConnectionsController.cs`
- [Transaction endpoints](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Api/Controllers/TransactionsController.cs): `api/src/NoAzul.Api/Controllers/TransactionsController.cs`
- [Profile endpoints](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Api/Controllers/ProfileController.cs): `api/src/NoAzul.Api/Controllers/ProfileController.cs`
- [Admin endpoints](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Api/Controllers/Admin/AuthorizationController.cs): `api/src/NoAzul.Api/Controllers/Admin/AuthorizationController.cs`
- [Bank connection service](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Application/BankConnections/BankConnectionAppService.cs): `api/src/NoAzul.Application/BankConnections/BankConnectionAppService.cs`
- [Transaction service](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Application/Transactions/TransactionAppService.cs): `api/src/NoAzul.Application/Transactions/TransactionAppService.cs`
- [Job administration](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Application/BackgroundJobs/BackgroundJobAppService.cs): `api/src/NoAzul.Application/BackgroundJobs/BackgroundJobAppService.cs`

### Identity and access

- [Authentication service](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Application/Auth/AuthAppService.cs): `api/src/NoAzul.Application/Auth/AuthAppService.cs`
- [Identity provider](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Infra.Data/Identity/AuthenticateService/AuthenticateService.cs): `api/src/NoAzul.Infra.Data/Identity/AuthenticateService/AuthenticateService.cs`
- [Authorization service](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Application/Authorizations/AuthorizationAppService.cs): `api/src/NoAzul.Application/Authorizations/AuthorizationAppService.cs`

### Data and synchronization

- [Pluggy client](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Infra.Data/Pluggy/PluggyClient.cs): `api/src/NoAzul.Infra.Data/Pluggy/PluggyClient.cs`
- [Bank sync jobs](https://github.com/caio26gualberto/noazul/tree/main/api/src/NoAzul.Workers/Triggers): `api/src/NoAzul.Workers/Triggers`
- [Data repository](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Infra.Data/Repositories/Repository.cs): `api/src/NoAzul.Infra.Data/Repositories/Repository.cs`
- [Postgres database](https://github.com/caio26gualberto/noazul/blob/main/api/src/NoAzul.Infra.Data/Context/AppDbContext.cs): `api/src/NoAzul.Infra.Data/Context/AppDbContext.cs`

### Other components

- **User**

## Connections

- User → App routes: uses (evidence: `README.md`)
- App routes → Auth service: routes to (evidence: `frontend/src/app/app.routes.ts`)
- App routes → Finance pages: routes to (evidence: `frontend/src/app/app.routes.ts`)
- App routes → Profile page: routes to (evidence: `frontend/src/app/app.routes.ts`)
- Auth service → API client: calls (evidence: `frontend/src/app/auth/auth.service.ts`)
- Finance service → API client: calls (evidence: `frontend/src/app/finance/finance.service.ts`)
- API client → Auth endpoints: sends requests
- API client → Bank endpoints: sends requests
- API client → Transaction endpoints: sends requests
- API client → Profile endpoints: sends requests
- Auth endpoints → Authentication service: calls
- Authentication service → Identity provider: authenticates via (evidence: `api/src/NoAzul.Application/Auth/AuthAppService.cs`)
- Identity provider → Postgres database: persists tokens (evidence: `api/src/NoAzul.Infra.Data/Identity/AuthenticateService/AuthenticateService.cs`)
- Bank endpoints → Bank connection service: calls
- Transaction endpoints → Transaction service: calls
- Profile endpoints → Data repository: uses
- Bank connection service → Pluggy client: integrates with
- Bank sync jobs → Pluggy client: syncs from
- Bank sync jobs → Postgres database: stores updates
- Transaction service → Data repository: queries
- Data repository → Postgres database: reads and writes (evidence: `api/src/NoAzul.Infra.Data/Repositories/Repository.cs`)
- Admin endpoints → Authorization service: calls
- Authorization service → Postgres database: records changes
- Job administration → Postgres database: tracks runs
