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:
| Camada | Responsabilidade | Diretório |
|---|---|---|
| Presentation | Componentes React, páginas, layouts | src/presentation/ |
| Application | Hooks, queries, lógica de negócio | src/application/ |
| Infrastructure | Clientes HTTP, integrações | src/infrastructure/ |
| Store | Estado global (Zustand) | src/store/ |
Backend (Django REST Framework)
O backend utiliza uma estrutura modular por aplicações Django:
| App | Responsabilidade |
|---|---|
accounts | Autenticação, usuários, tokens |
entrepreneurs | Perfil e documentos de empreendedores |
structuring_agents | Agentes estruturadores e aprovações |
business_plans | Planos de negócio, mentorias, correções |
managers | Gestores e aprovação de agentes |
reports | Geração de relatórios |
notifications | Sistema de emails |
Serviços de Infraestrutura
| Serviço | Função | Porta |
|---|---|---|
| PostgreSQL 16 | Banco de dados principal | 5432 |
| Redis 7 | Cache e message broker | 6379 |
| MinIO | Armazenamento de arquivos (S3-compatible) | 9000/9001 |
| Celery | Processamento 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