Arquitetura & EngenhariaBackend

Sistema de Módulos

Arquitetura dos módulos backend e injeção de dependência.

O backend é dividido em vários módulos chave, cada um responsável por um domínio específico da aplicação.

Módulos Principais

Auth Module (apps/api/src/auth)

Lida com todos os mecanismos de autenticação, incluindo OIDC, estratégia JWT, estratégia local e guards. Atua como o porteiro da aplicação.

User Module (apps/api/src/user)

Gerencia entidades de usuário, perfis e operações relacionadas a usuários. Interage com a entidade User no banco de dados.

Role Module (apps/api/src/role)

Gerencia cargos e permissões. Define o que um usuário pode ou não fazer dentro do sistema.

Organization Module (apps/api/src/organization)

Suporta multi-tenancy agrupando usuários em organizações. Recursos podem ser escopados para organizações específicas.

Files Module (apps/api/src/files)

Lida com uploads de arquivos (ex: avatares de usuários, anexos de documentos). Tipicamente interage com um serviço de armazenamento de objetos como AWS S3.

Whitelabel Module (apps/api/src/whitelabel)

Permite a customização da aparência e comportamento da aplicação com base no tenant ou organização, suportando casos de uso B2B2C.

Chat Module (apps/api/src/chat)

Fornece capacidades de IA usando Vercel AI SDK e Google Gemini. Expõe endpoints para streaming de completions de chat e gerenciamento de interações de IA.

Criando um Novo Módulo

Para adicionar um novo módulo, use o NestJS CLI (se instalado globalmente) ou crie manualmente a estrutura:

nest g module meu-modulo
nest g controller meu-modulo
nest g service meu-modulo

Certifique-se de registrar o novo módulo em app.module.ts.