Pular para o conteúdo principal

Arquitetura do Sistema

O Módulo Empreendedorismo utiliza uma arquitetura moderna em camadas, seguindo princípios de Clean Architecture e separação de responsabilidades.

Diagrama de Alto Nível

┌──────────────────────────────────────────────────────────────────┐
│ CLIENTE │
│ (Browser / Mobile) │
└─────────────────────────────┬────────────────────────────────────┘


┌──────────────────────────────────────────────────────────────────┐
│ FRONTEND (React) │
│ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │
│ │ Presentation│ │ Application │ │Infrastructure│ │
│ │ Layer │ │ Layer │ │ Layer │ │
│ │ (Pages, │ │ (Hooks, │ │ (APIs, │ │
│ │ Components) │ │ Queries) │ │ Axios) │ │
│ └─────────────┘ └─────────────┘ └──────────────┘ │
└─────────────────────────────┬────────────────────────────────────┘
│ HTTP/REST

┌──────────────────────────────────────────────────────────────────┐
│ BACKEND (Django REST) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │Presentations│ │ Services │ │ Models │ │
│ │ (Views, │ │ (Business │ │ (Database │ │
│ │ Serializers)│ │ Logic) │ │ Entities) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────┬────────────────────────────────────┘

┌────────────────────┼────────────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ PostgreSQL │ │ Redis │ │ MinIO │
│ (Database) │ │ (Cache/Queue) │ │ (Storage) │
└─────────────────┘ └─────────────────┘ └─────────────────┘


┌─────────────────┐
│ Celery Workers │
│ (Background │
│ Tasks) │
└─────────────────┘

Componentes Principais

Frontend (React + TypeScript)

O frontend segue uma arquitetura em camadas inspirada em Clean Architecture:

CamadaResponsabilidadeDiretório
PresentationComponentes React, páginas, layoutssrc/presentation/
ApplicationHooks, queries, lógica de negóciosrc/application/
InfrastructureClientes HTTP, integraçõessrc/infrastructure/
StoreEstado global (Zustand)src/store/

Backend (Django REST Framework)

O backend utiliza uma estrutura modular por aplicações Django:

AppResponsabilidade
accountsAutenticação, usuários, tokens
entrepreneursPerfil e documentos de empreendedores
structuring_agentsAgentes estruturadores e aprovações
business_plansPlanos de negócio, mentorias, correções
managersGestores e aprovação de agentes
reportsGeração de relatórios
notificationsSistema de emails

Serviços de Infraestrutura

ServiçoFunçãoPorta
PostgreSQL 16Banco de dados principal5432
Redis 7Cache e message broker6379
MinIOArmazenamento de arquivos (S3-compatible)9000/9001
CeleryProcessamento assíncrono-

Fluxo de Dados

Autenticação (JWT)

┌────────┐     POST /api/auth/login/     ┌─────────┐
│ Client │ ─────────────────────────────▶│ Backend │
└────────┘ └─────────┘
│ │
│ { access, refresh } │
│◀────────────────────────────────────────│
│ │
│ Authorization: Bearer <token> │
│────────────────────────────────────────▶│
│ │
│ Protected Resource │
│◀────────────────────────────────────────│

Processamento Assíncrono

┌────────┐     Request      ┌─────────┐     Task       ┌────────┐
│ Client │ ────────────────▶│ Backend │ ─────────────▶│ Redis │
└────────┘ └─────────┘ └────────┘


┌──────────┐
│ Celery │
│ Worker │
└──────────┘

┌──────────────────────┘

┌──────────────┐
│ Email/Report │
└──────────────┘

Princípios de Design

1. Separação de Responsabilidades

Cada módulo tem uma responsabilidade clara e bem definida.

2. Permissões Granulares

Sistema de permissões customizado por objeto (Object-level permissions).

3. Processamento Assíncrono

Tarefas pesadas (emails, relatórios) são processadas em background via Celery.

4. Armazenamento Seguro

  • Tokens com hash SHA-256
  • Mídia protegida por autenticação
  • Soft delete com período de carência

5. Type Safety

TypeScript no frontend garante tipagem estática em toda a aplicação.

Escalabilidade

O sistema foi projetado para escalar horizontalmente:

  • Frontend: Build estático servido por CDN/Nginx
  • Backend: Múltiplas instâncias via Gunicorn/Docker
  • Workers: Celery workers podem ser escalados independentemente
  • Database: PostgreSQL com suporte a réplicas de leitura
  • Storage: MinIO com replicação