# rossiolourenco/organiza-ai-web architecture

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

- Interactive diagram: https://gitdiagram.com/rossiolourenco/organiza-ai-web
- Repository: https://github.com/rossiolourenco/organiza-ai-web

## Overview

Organiza Aí is a full-stack personal task organizer. Users register or log in, then manage user-scoped tasks from the dashboard and task form: create, list, edit, complete, delete, and filter by status or priority; tasks can have deadlines, priorities, and optional categories. Category management is a separate capability, and account data is kept separate by user. The Angular services communicate with Spring REST controllers; task rules live in a service, while controllers access repositories for users and categories. The README documents PostgreSQL/Supabase persistence. Some page-to-service wiring is inferred from the documented workflows; unsampled implementation details are not expanded.

Main entry points: [`frontend/src/app/app.routes.ts`](https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/app.routes.ts) (Page routing), [`backend/src/main/java/br/com/organizaai/backend/service/TarefaService.java`](https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/service/TarefaService.java) (Task service), [`backend/src/main/java/br/com/organizaai/backend/controller/CategoriaController.java`](https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/controller/CategoriaController.java) (Category API), [`backend/src/main/java/br/com/organizaai/backend/repository/UsuarioRepository.java`](https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/repository/UsuarioRepository.java) (User repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Angular interface"]
  node_angular["Angular app<br/>[main.ts]"]
  node_routes["Page routing<br/>[app.routes.ts]"]
  node_login["Login page<br/>[login.component.ts]"]
  node_signup["Registration page"]
  node_home["Task dashboard<br/>[home.component.ts]"]
  node_taskform["Task form"]
end

subgraph group_identity["User accounts"]
  node_usersvc["User service<br/>[usuario.service.ts]"]
  node_userapi["User API"]
  node_userentity["User entity<br/>[Usuario.java]"]
end

subgraph group_taskflow["Task management"]
  node_tasksvc["Task service<br/>[TarefaService.java]"]
  node_taskapi["Task API"]
  node_tasksrv["Task service client<br/>[tarefa.service.ts]"]
  node_taskentity["Task entity<br/>[Tarefa.java]"]
end

subgraph group_category["Categories"]
  node_catsvc["Category client"]
  node_catapi["Category API"]
  node_catentity["Category entity<br/>[Categoria.java]"]
end

subgraph group_persistence["Persistence"]
  node_userrepo["User repository"]
  node_taskrepo["Task repository"]
  node_catrepo["Category repository"]
end

node_person(("User"))
node_database[("PostgreSQL / Supabase")]

node_person -->|"uses"| node_angular
node_angular -->|"loads routes"| node_routes
node_routes -->|"routes to"| node_login
node_routes -->|"routes to"| node_signup
node_routes -->|"routes to"| node_home
node_routes -->|"routes to"| node_taskform
node_login -->|"authenticates"| node_usersvc
node_signup -->|"registers through"| node_usersvc
node_usersvc -->|"HTTP requests"| node_userapi
node_userapi -->|"reads and writes"| node_userrepo
node_userapi -->|"handles"| node_userentity
node_userrepo -->|"persists"| node_database
node_home -->|"loads and filters"| node_tasksrv
node_taskform -->|"creates or edits"| node_tasksrv
node_tasksrv -->|"HTTP requests"| node_taskapi
node_taskapi -->|"delegates task operations"| node_tasksvc
node_tasksvc -->|"queries and saves"| node_taskrepo
node_tasksvc -->|"checks task owner"| node_userrepo
node_tasksvc -->|"validates category owner"| node_catrepo
node_taskapi -->|"handles"| node_taskentity
node_taskrepo -->|"persists"| node_database
node_home -->|"loads categories"| node_catsvc
node_taskform -->|"selects category"| node_catsvc
node_catsvc -->|"HTTP requests"| node_catapi
node_catapi -->|"queries and saves"| node_catrepo
node_catapi -->|"checks category owner"| node_userrepo
node_catapi -->|"handles"| node_catentity
node_catrepo -->|"persists"| node_database

click node_angular "https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/main.ts"
click node_routes "https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/app.routes.ts"
click node_login "https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/pages/login/login.component.ts"
click node_signup "https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/pages/cadastro/cadastro.component.ts"
click node_home "https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/pages/home/home.component.ts"
click node_taskform "https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/pages/tarefa-form/tarefa-form.component.ts"
click node_usersvc "https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/services/usuario.service.ts"
click node_userapi "https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/controller/UsuarioController.java"
click node_userrepo "https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/repository/UsuarioRepository.java"
click node_userentity "https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/model/Usuario.java"
click node_tasksvc "https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/service/TarefaService.java"
click node_taskapi "https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/controller/TarefaController.java"
click node_tasksrv "https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/services/tarefa.service.ts"
click node_taskrepo "https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/repository/TarefaRepository.java"
click node_taskentity "https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/model/Tarefa.java"
click node_catsvc "https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/services/categoria.service.ts"
click node_catapi "https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/controller/CategoriaController.java"
click node_catrepo "https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/repository/CategoriaRepository.java"
click node_catentity "https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/model/Categoria.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_angular,node_routes,node_login,node_signup,node_home,node_taskform,node_person toneBlue
class node_usersvc,node_userapi,node_userentity,node_database toneAmber
class node_tasksvc,node_taskapi,node_tasksrv,node_taskentity toneMint
class node_catsvc,node_catapi,node_catentity toneRose
class node_userrepo,node_taskrepo,node_catrepo toneIndigo
```

## Components

### Angular interface

- [Angular app](https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/main.ts): `frontend/src/main.ts`
- [Page routing](https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/app.routes.ts): `frontend/src/app/app.routes.ts`
- [Login page](https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/pages/login/login.component.ts): `frontend/src/app/pages/login/login.component.ts`
- [Registration page](https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/pages/cadastro/cadastro.component.ts): `frontend/src/app/pages/cadastro/cadastro.component.ts`
- [Task dashboard](https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/pages/home/home.component.ts): `frontend/src/app/pages/home/home.component.ts`
- [Task form](https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/pages/tarefa-form/tarefa-form.component.ts): `frontend/src/app/pages/tarefa-form/tarefa-form.component.ts`

### User accounts

- [User service](https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/services/usuario.service.ts): `frontend/src/app/services/usuario.service.ts`
- [User API](https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/controller/UsuarioController.java): `backend/src/main/java/br/com/organizaai/backend/controller/UsuarioController.java`
- [User entity](https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/model/Usuario.java): `backend/src/main/java/br/com/organizaai/backend/model/Usuario.java`

### Task management

- [Task service](https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/service/TarefaService.java): `backend/src/main/java/br/com/organizaai/backend/service/TarefaService.java`
- [Task API](https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/controller/TarefaController.java): `backend/src/main/java/br/com/organizaai/backend/controller/TarefaController.java`
- [Task service client](https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/services/tarefa.service.ts): `frontend/src/app/services/tarefa.service.ts`
- [Task entity](https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/model/Tarefa.java): `backend/src/main/java/br/com/organizaai/backend/model/Tarefa.java`

### Categories

- [Category client](https://github.com/rossiolourenco/organiza-ai-web/blob/main/frontend/src/app/services/categoria.service.ts): `frontend/src/app/services/categoria.service.ts`
- [Category API](https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/controller/CategoriaController.java): `backend/src/main/java/br/com/organizaai/backend/controller/CategoriaController.java`
- [Category entity](https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/model/Categoria.java): `backend/src/main/java/br/com/organizaai/backend/model/Categoria.java`

### Persistence

- [User repository](https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/repository/UsuarioRepository.java): `backend/src/main/java/br/com/organizaai/backend/repository/UsuarioRepository.java`
- [Task repository](https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/repository/TarefaRepository.java): `backend/src/main/java/br/com/organizaai/backend/repository/TarefaRepository.java`
- [Category repository](https://github.com/rossiolourenco/organiza-ai-web/blob/main/backend/src/main/java/br/com/organizaai/backend/repository/CategoriaRepository.java): `backend/src/main/java/br/com/organizaai/backend/repository/CategoriaRepository.java`

### Other components

- **User**
- **PostgreSQL / Supabase**

## Connections

- User → Angular app: uses
- Angular app → Page routing: loads routes
- Page routing → Login page: routes to
- Page routing → Registration page: routes to
- Page routing → Task dashboard: routes to
- Page routing → Task form: routes to
- Login page → User service: authenticates
- Registration page → User service: registers through
- User service → User API: HTTP requests
- User API → User repository: reads and writes
- User API → User entity: handles
- User repository → PostgreSQL / Supabase: persists
- Task dashboard → Task service client: loads and filters
- Task form → Task service client: creates or edits
- Task service client → Task API: HTTP requests
- Task API → Task service: delegates task operations
- Task service → Task repository: queries and saves
- Task service → User repository: checks task owner
- Task service → Category repository: validates category owner
- Task API → Task entity: handles
- Task repository → PostgreSQL / Supabase: persists
- Task dashboard → Category client: loads categories
- Task form → Category client: selects category
- Category client → Category API: HTTP requests
- Category API → Category repository: queries and saves
- Category API → User repository: checks category owner
- Category API → Category entity: handles
- Category repository → PostgreSQL / Supabase: persists
