# vfmachado/tads-webii-2026-2 architecture

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

- Interactive diagram: https://gitdiagram.com/vfmachado/tads-webii-2026-2
- Repository: https://github.com/vfmachado/tads-webii-2026-2

## Overview

Este repositório reúne exercícios independentes de um curso, não um único produto: exemplos de renderização web, tarefas, Kanban, rede social, gestão de projetos e chat em tempo real. O fluxo principal varia por aplicação; o grafo destaca a API e as rotas web da rede social, além de mostrar os demais domínios sem presumir que sejam integrados. As ligações refletem os trechos amostrados; módulos não inspecionados aparecem sem ligações quando a chamada não pôde ser confirmada.

Main entry points: [`Aula05/rede-social/src/webRoutes.ts`](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/webRoutes.ts) (Rotas web), [`Aula04/rede-social/src/routes.ts`](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula04/rede-social/src/routes.ts) (Rotas API), [`Aula05/rede-social/src/uploads/storage.ts`](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/uploads/storage.ts) (Armazenamento de imagens), [`Aula05/rede-social/src/users/UserController.ts`](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/users/UserController.ts) (Controller de usuários)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_tasks["Tarefas e Kanban"]
  node_task_routes["Rotas de tarefas<br/>[routes.ts]"]
  node_task_controller["Controller de tarefas<br/>[TaskController.ts]"]
  node_kanban_routes["Rotas Kanban<br/>[routes.ts]"]
  node_card_controller["Controller de cartões<br/>[CardController.ts]"]
end

subgraph group_social["Rede social"]
  node_social_api_routes["Rotas API<br/>[routes.ts]"]
  node_social_web_routes["Rotas web<br/>[webRoutes.ts]"]
  node_user_controller["Controller de usuários<br/>[UserController.ts]"]
  node_post_controller["Controller de posts<br/>[PostController.ts]"]
  node_auth_controller["Autenticação<br/>[AuthController.ts]"]
  node_auth_middleware["Autorização<br/>[middleware.ts]"]
  node_upload_parser["Recepção de imagens<br/>[upload.ts]"]
  node_image_storage["Armazenamento de imagens<br/>[storage.ts]"]
  node_local_storage["Disco local<br/>[localStorage.ts]"]
  node_s3_storage["Armazenamento S3<br/>[s3Storage.ts]"]
  node_database[("Banco relacional<br/>[db.ts]")]
end

subgraph group_projects["Gestão de projetos"]
  node_project_routes["Rotas de projetos<br/>[projectRoutes.ts]"]
  node_project_controller["Controller de projetos"]
  node_project_use_cases["Casos de uso<br/>[CreateProject.ts]"]
  node_project_repository["Repositório em memória"]
  node_access_routes["Rotas de acesso<br/>[accessRoutes.ts]"]
  node_reports_routes["Rotas de relatórios<br/>[reportsRoutes.ts]"]
end

subgraph group_chat["Chat em tempo real"]
  node_chat_channels["Estado dos canais<br/>[ChannelManager.ts]"]
  node_chat_handler["Adaptador WebSocket"]
end

node_browser(("Pessoa usuária"))
node_s3["Amazon S3"]

node_browser -->|"envia requisições"| node_task_routes
node_task_routes -->|"invoca"| node_task_controller
node_browser -->|"envia requisições"| node_kanban_routes
node_kanban_routes -->|"invoca"| node_card_controller
node_browser -->|"envia requisições"| node_social_api_routes
node_social_api_routes -->|"invoca"| node_user_controller
node_social_api_routes -->|"invoca"| node_post_controller
node_browser -->|"envia requisições"| node_social_web_routes
node_social_web_routes -->|"invoca"| node_auth_controller
node_social_web_routes -->|"invoca"| node_user_controller
node_social_web_routes -->|"invoca"| node_post_controller
node_social_web_routes -->|"protege rotas"| node_auth_middleware
node_social_web_routes -->|"processa arquivos"| node_upload_parser
node_social_web_routes -->|"solicita upload"| node_image_storage
node_image_storage -.->|"implementado por"| node_local_storage
node_image_storage -.->|"implementado por"| node_s3_storage
node_s3_storage -->|"envia objeto"| node_s3
node_user_controller -->|"consulta e grava"| node_database
node_post_controller -->|"consulta e grava"| node_database
node_auth_controller -->|"consulta e grava"| node_database

click node_task_routes "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula02/depois/src/routes.ts"
click node_task_controller "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula02/depois/src/controllers/TaskController.ts"
click node_kanban_routes "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula03/kanban/src/routes.ts"
click node_card_controller "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula03/kanban/src/cards/CardController.ts"
click node_social_api_routes "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula04/rede-social/src/routes.ts"
click node_social_web_routes "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/webRoutes.ts"
click node_user_controller "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/users/UserController.ts"
click node_post_controller "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/posts/PostController.ts"
click node_auth_controller "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/auth/AuthController.ts"
click node_auth_middleware "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/auth/middleware.ts"
click node_upload_parser "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/uploads/upload.ts"
click node_image_storage "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/uploads/storage.ts"
click node_local_storage "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/uploads/localStorage.ts"
click node_s3_storage "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/uploads/s3Storage.ts"
click node_database "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/db.ts"
click node_project_routes "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula06/project-management/src/modules/projects/adapters/http/projectRoutes.ts"
click node_project_controller "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula06/project-management/src/modules/projects/adapters/http/ProjectController.ts"
click node_project_use_cases "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula06/project-management/src/modules/projects/application/useCases/CreateProject.ts"
click node_project_repository "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula06/project-management/src/modules/projects/adapters/memory/InMemoryProjectRepository.ts"
click node_access_routes "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula06/project-management/src/modules/access/adapters/http/accessRoutes.ts"
click node_reports_routes "https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula06/project-management/src/modules/reports/adapters/http/reportsRoutes.ts"
click node_chat_channels "https://github.com/vfmachado/tads-webii-2026-2/blob/main/AulaWebSocket/chat/src/chat/ChannelManager.ts"
click node_chat_handler "https://github.com/vfmachado/tads-webii-2026-2/blob/main/AulaWebSocket/chat/src/chat/webSocketHandler.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_task_routes,node_task_controller,node_kanban_routes,node_card_controller toneBlue
class node_social_api_routes,node_social_web_routes,node_user_controller,node_post_controller,node_auth_controller,node_auth_middleware,node_upload_parser,node_image_storage,node_local_storage,node_s3_storage,node_database toneAmber
class node_project_routes,node_project_controller,node_project_use_cases,node_project_repository,node_access_routes,node_reports_routes toneMint
class node_chat_channels,node_chat_handler toneRose
class node_browser,node_s3 toneIndigo
```

## Components

### Tarefas e Kanban

- [Rotas de tarefas](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula02/depois/src/routes.ts): `Aula02/depois/src/routes.ts`
- [Controller de tarefas](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula02/depois/src/controllers/TaskController.ts): `Aula02/depois/src/controllers/TaskController.ts`
- [Rotas Kanban](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula03/kanban/src/routes.ts): `Aula03/kanban/src/routes.ts`
- [Controller de cartões](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula03/kanban/src/cards/CardController.ts): `Aula03/kanban/src/cards/CardController.ts`

### Rede social

- [Rotas API](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula04/rede-social/src/routes.ts): `Aula04/rede-social/src/routes.ts`
- [Rotas web](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/webRoutes.ts): `Aula05/rede-social/src/webRoutes.ts`
- [Controller de usuários](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/users/UserController.ts): `Aula05/rede-social/src/users/UserController.ts`
- [Controller de posts](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/posts/PostController.ts): `Aula05/rede-social/src/posts/PostController.ts`
- [Autenticação](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/auth/AuthController.ts): `Aula05/rede-social/src/auth/AuthController.ts`
- [Autorização](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/auth/middleware.ts): `Aula05/rede-social/src/auth/middleware.ts`
- [Recepção de imagens](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/uploads/upload.ts): `Aula05/rede-social/src/uploads/upload.ts`
- [Armazenamento de imagens](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/uploads/storage.ts): `Aula05/rede-social/src/uploads/storage.ts`
- [Disco local](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/uploads/localStorage.ts): `Aula05/rede-social/src/uploads/localStorage.ts`
- [Armazenamento S3](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/uploads/s3Storage.ts): `Aula05/rede-social/src/uploads/s3Storage.ts`
- [Banco relacional](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula05/rede-social/src/db.ts): `Aula05/rede-social/src/db.ts`

### Gestão de projetos

- [Rotas de projetos](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula06/project-management/src/modules/projects/adapters/http/projectRoutes.ts): `Aula06/project-management/src/modules/projects/adapters/http/projectRoutes.ts`
- [Controller de projetos](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula06/project-management/src/modules/projects/adapters/http/ProjectController.ts): `Aula06/project-management/src/modules/projects/adapters/http/ProjectController.ts`
- [Casos de uso](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula06/project-management/src/modules/projects/application/useCases/CreateProject.ts): `Aula06/project-management/src/modules/projects/application/useCases/CreateProject.ts`
- [Repositório em memória](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula06/project-management/src/modules/projects/adapters/memory/InMemoryProjectRepository.ts): `Aula06/project-management/src/modules/projects/adapters/memory/InMemoryProjectRepository.ts`
- [Rotas de acesso](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula06/project-management/src/modules/access/adapters/http/accessRoutes.ts): `Aula06/project-management/src/modules/access/adapters/http/accessRoutes.ts`
- [Rotas de relatórios](https://github.com/vfmachado/tads-webii-2026-2/blob/main/Aula06/project-management/src/modules/reports/adapters/http/reportsRoutes.ts): `Aula06/project-management/src/modules/reports/adapters/http/reportsRoutes.ts`

### Chat em tempo real

- [Estado dos canais](https://github.com/vfmachado/tads-webii-2026-2/blob/main/AulaWebSocket/chat/src/chat/ChannelManager.ts): `AulaWebSocket/chat/src/chat/ChannelManager.ts`
- [Adaptador WebSocket](https://github.com/vfmachado/tads-webii-2026-2/blob/main/AulaWebSocket/chat/src/chat/webSocketHandler.ts): `AulaWebSocket/chat/src/chat/webSocketHandler.ts`

### Other components

- **Pessoa usuária**
- **Amazon S3**

## Connections

- Pessoa usuária → Rotas de tarefas: envia requisições
- Rotas de tarefas → Controller de tarefas: invoca
- Pessoa usuária → Rotas Kanban: envia requisições
- Rotas Kanban → Controller de cartões: invoca
- Pessoa usuária → Rotas API: envia requisições
- Rotas API → Controller de usuários: invoca
- Rotas API → Controller de posts: invoca
- Pessoa usuária → Rotas web: envia requisições
- Rotas web → Autenticação: invoca
- Rotas web → Controller de usuários: invoca
- Rotas web → Controller de posts: invoca
- Rotas web → Autorização: protege rotas
- Rotas web → Recepção de imagens: processa arquivos
- Rotas web → Armazenamento de imagens: solicita upload
- Armazenamento de imagens → Disco local: implementado por
- Armazenamento de imagens → Armazenamento S3: implementado por
- Armazenamento S3 → Amazon S3: envia objeto
- Controller de usuários → Banco relacional: consulta e grava
- Controller de posts → Banco relacional: consulta e grava
- Autenticação → Banco relacional: consulta e grava
