# konvex-jr/backendprojetoserp architecture

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

## Overview

BackendProjetosERP is an Express/TypeScript API for an internal ERP. The principal workflow is a frontend request entering registered HTTP routes, passing authentication and permission checks, and invoking domain use cases that read or mutate repository-backed data. Major product branches include people and sessions, projects and tasks, training, knowledge, initiatives, documents, and attachments. PostgreSQL and filesystem attachment storage are production concerns; the repository factory also documents interchangeable in-memory repositories. Some subsystem links reflect README or source-index documentation because their implementation excerpts were not provided.

Main entry points: [`source/domain/interfaces/RepositoryFactoryInterface.ts`](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/domain/interfaces/RepositoryFactoryInterface.ts) (Repository factory), [`source/modulos/registro.ts`](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/modulos/registro.ts) (Route registry), [`source/infra/http/routes/UsuarioRoutes.ts`](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/http/routes/UsuarioRoutes.ts) (User and auth routes), [`source/infra/http/routes/TarefaRoutes.ts`](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/http/routes/TarefaRoutes.ts) (Task routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_http["HTTP entry"]
  node_routes["Route registry<br/>[registro.ts]"]
  node_user_routes["User and auth routes<br/>[UsuarioRoutes.ts]"]
  node_task_routes["Task routes<br/>[TarefaRoutes.ts]"]
  node_project_routes["Project routes<br/>[ProjetoRoutes.ts]"]
  node_other_routes["Other feature routes"]
  node_http_contract["HTTP contract<br/>[Http.ts]"]
end

subgraph group_domain["Business services"]
  node_sessions["Session use cases"]
  node_people["People use cases"]
  node_projects["Project use cases"]
  node_tasks["Task use cases"]
  node_training["Training management"]
  node_knowledge["Knowledge base"]
  node_initiatives["Initiatives"]
  node_documents["Document management"]
  node_attachments["Attachment management<br/>[GerirAnexos.ts]"]
end

subgraph group_security["Access control"]
  node_permissions["Permission checks<br/>[permissoes.ts]"]
  node_task_rules["Task visibility rules<br/>[regrasTarefa.ts]"]
end

subgraph group_persistence["Persistence"]
  node_factory["Repository factory"]
  node_db_factory["Database repositories"]
  node_memory_factory["Memory repositories"]
  node_task_db["Task repository"]
  node_file_storage["Attachment storage"]
end

node_frontend(("ERP frontend"))
node_postgres[("PostgreSQL")]

node_frontend -->|"sends requests"| node_routes
node_routes -->|"registers"| node_user_routes
node_routes -->|"registers"| node_task_routes
node_routes -->|"registers"| node_project_routes
node_routes -->|"registers"| node_other_routes
node_user_routes -->|"invokes"| node_sessions
node_user_routes -->|"invokes"| node_people
node_task_routes -->|"invokes"| node_tasks
node_project_routes -->|"invokes"| node_projects
node_task_routes -->|"checks access"| node_permissions
node_task_routes -->|"checks visibility"| node_task_rules
node_user_routes -->|"uses"| node_http_contract
node_routes -->|"registers routes"| node_http_contract
node_sessions -.->|"obtains repositories"| node_factory
node_people -.->|"obtains repositories"| node_factory
node_projects -.->|"obtains repositories"| node_factory
node_tasks -.->|"obtains repositories"| node_factory
node_training -->|"obtains repositories"| node_factory
node_attachments -->|"obtains repositories"| node_factory
node_attachments -->|"stores bytes"| node_file_storage
node_factory -->|"implemented by"| node_db_factory
node_factory -->|"implemented by"| node_memory_factory
node_db_factory -.->|"creates"| node_task_db
node_task_db -->|"reads and writes"| node_postgres

click node_routes "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/modulos/registro.ts"
click node_user_routes "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/http/routes/UsuarioRoutes.ts"
click node_task_routes "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/http/routes/TarefaRoutes.ts"
click node_project_routes "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/http/routes/ProjetoRoutes.ts"
click node_other_routes "https://github.com/konvex-jr/backendprojetoserp/tree/main/source/infra/http/routes"
click node_http_contract "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/http/Http.ts"
click node_sessions "https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/auth"
click node_people "https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/pessoas"
click node_projects "https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/projetos"
click node_tasks "https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/tarefas"
click node_training "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/useCases/capacitacoes/GerirCapacitacoes.ts"
click node_knowledge "https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/conhecimento"
click node_initiatives "https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/iniciativas"
click node_documents "https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/documentos"
click node_attachments "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/useCases/anexos/GerirAnexos.ts"
click node_permissions "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/shared/seguranca/permissoes.ts"
click node_task_rules "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/shared/seguranca/regrasTarefa.ts"
click node_factory "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/domain/interfaces/RepositoryFactoryInterface.ts"
click node_db_factory "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/repository/DatabaseRepositoryFactory.ts"
click node_memory_factory "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/repository/MemoryRepositoryFactory.ts"
click node_task_db "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/repository/database/TarefaRepositoryDatabase.ts"
click node_file_storage "https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/arquivos/ArmazenamentoAnexosDisco.ts"

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_user_routes,node_task_routes,node_project_routes,node_other_routes,node_http_contract,node_frontend toneBlue
class node_sessions,node_people,node_projects,node_tasks,node_training,node_knowledge,node_initiatives,node_documents,node_attachments,node_postgres toneAmber
class node_permissions,node_task_rules toneMint
class node_factory,node_db_factory,node_memory_factory,node_task_db,node_file_storage toneRose
```

## Components

### HTTP entry

- [Route registry](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/modulos/registro.ts): `source/modulos/registro.ts`
- [User and auth routes](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/http/routes/UsuarioRoutes.ts): `source/infra/http/routes/UsuarioRoutes.ts`
- [Task routes](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/http/routes/TarefaRoutes.ts): `source/infra/http/routes/TarefaRoutes.ts`
- [Project routes](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/http/routes/ProjetoRoutes.ts): `source/infra/http/routes/ProjetoRoutes.ts`
- [Other feature routes](https://github.com/konvex-jr/backendprojetoserp/tree/main/source/infra/http/routes): `source/infra/http/routes`
- [HTTP contract](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/http/Http.ts): `source/infra/http/Http.ts`

### Business services

- [Session use cases](https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/auth): `source/useCases/auth`
- [People use cases](https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/pessoas): `source/useCases/pessoas`
- [Project use cases](https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/projetos): `source/useCases/projetos`
- [Task use cases](https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/tarefas): `source/useCases/tarefas`
- [Training management](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/useCases/capacitacoes/GerirCapacitacoes.ts): `source/useCases/capacitacoes/GerirCapacitacoes.ts`
- [Knowledge base](https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/conhecimento): `source/useCases/conhecimento`
- [Initiatives](https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/iniciativas): `source/useCases/iniciativas`
- [Document management](https://github.com/konvex-jr/backendprojetoserp/tree/main/source/useCases/documentos): `source/useCases/documentos`
- [Attachment management](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/useCases/anexos/GerirAnexos.ts): `source/useCases/anexos/GerirAnexos.ts`

### Access control

- [Permission checks](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/shared/seguranca/permissoes.ts): `source/shared/seguranca/permissoes.ts`
- [Task visibility rules](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/shared/seguranca/regrasTarefa.ts): `source/shared/seguranca/regrasTarefa.ts`

### Persistence

- [Repository factory](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/domain/interfaces/RepositoryFactoryInterface.ts): `source/domain/interfaces/RepositoryFactoryInterface.ts`
- [Database repositories](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/repository/DatabaseRepositoryFactory.ts): `source/infra/repository/DatabaseRepositoryFactory.ts`
- [Memory repositories](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/repository/MemoryRepositoryFactory.ts): `source/infra/repository/MemoryRepositoryFactory.ts`
- [Task repository](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/repository/database/TarefaRepositoryDatabase.ts): `source/infra/repository/database/TarefaRepositoryDatabase.ts`
- [Attachment storage](https://github.com/konvex-jr/backendprojetoserp/blob/main/source/infra/arquivos/ArmazenamentoAnexosDisco.ts): `source/infra/arquivos/ArmazenamentoAnexosDisco.ts`

### Other components

- **ERP frontend**
- **PostgreSQL**

## Connections

- ERP frontend → Route registry: sends requests (evidence: `README.md`)
- Route registry → User and auth routes: registers (evidence: `source/modulos/registro.ts`)
- Route registry → Task routes: registers (evidence: `source/modulos/registro.ts`)
- Route registry → Project routes: registers (evidence: `source/modulos/registro.ts`)
- Route registry → Other feature routes: registers (evidence: `source/modulos/registro.ts`)
- User and auth routes → Session use cases: invokes (evidence: `source/infra/http/routes/UsuarioRoutes.ts`)
- User and auth routes → People use cases: invokes (evidence: `source/infra/http/routes/UsuarioRoutes.ts`)
- Task routes → Task use cases: invokes (evidence: `source/infra/http/routes/TarefaRoutes.ts`)
- Project routes → Project use cases: invokes (evidence: `source/infra/http/routes/ProjetoRoutes.ts`)
- Task routes → Permission checks: checks access (evidence: `source/infra/http/routes/TarefaRoutes.ts`)
- Task routes → Task visibility rules: checks visibility (evidence: `source/infra/http/routes/TarefaRoutes.ts`)
- User and auth routes → HTTP contract: uses (evidence: `source/infra/http/routes/UsuarioRoutes.ts`)
- Route registry → HTTP contract: registers routes (evidence: `source/infra/http/Router.ts`)
- Session use cases → Repository factory: obtains repositories
- People use cases → Repository factory: obtains repositories
- Project use cases → Repository factory: obtains repositories (evidence: `source/useCases/projetos/Equipe.ts`)
- Task use cases → Repository factory: obtains repositories
- Training management → Repository factory: obtains repositories (evidence: `source/useCases/capacitacoes/GerirCapacitacoes.ts`)
- Attachment management → Repository factory: obtains repositories (evidence: `source/useCases/anexos/GerirAnexos.ts`)
- Attachment management → Attachment storage: stores bytes (evidence: `source/useCases/anexos/GerirAnexos.ts`)
- Repository factory → Database repositories: implemented by (evidence: `source/infra/repository/DatabaseRepositoryFactory.ts`)
- Repository factory → Memory repositories: implemented by (evidence: `source/infra/repository/MemoryRepositoryFactory.ts`)
- Database repositories → Task repository: creates (evidence: `source/infra/repository/DatabaseRepositoryFactory.ts`)
- Task repository → PostgreSQL: reads and writes (evidence: `source/infra/repository/database/TarefaRepositoryDatabase.ts`)
