Estrutura do Backend
O backend segue uma arquitetura modular organizada por aplicações Django (apps), onde cada app é responsável por um domínio específico do sistema.
Estrutura de Diretórios
backend/
├── apps/
│ ├── accounts/
│ │ ├── models.py # User, Tokens
│ │ ├── presentations/
│ │ │ ├── views/ # Login, Register, Reset
│ │ │ └── serializers/
│ │ ├── permissions/
│ │ ├── tasks.py # Celery tasks
│ │ └── urls.py
│ │
│ ├── entrepreneurs/
│ │ ├── models.py # Entrepreneur, Documents
│ │ ├── presentations/
│ │ │ ├── views/
│ │ │ └── serializers/
│ │ ├── permissions/ # IsEntrepreneurOwner
│ │ └── urls.py
│ │
│ ├── structuring_agents/
│ │ ├── models.py # StructuringAgent, Approval
│ │ ├── presentations/
│ │ │ ├── views/
│ │ │ └── serializers/
│ │ ├── permissions/
│ │ ├── choices.py # ApprovalRequestStatus
│ │ └── urls.py
│ │
│ ├── business_plans/
│ │ ├── models.py # BusinessPlan, Mentorship
│ │ ├── presentations/
│ │ │ ├── views/
│ │ │ └── serializers/
│ │ ├── permissions/ # CanViewBusinessPlan
│ │ ├── choices.py # Setores, Status, etc
│ │ └── urls.py
│ │
│ ├── managers/
│ │ ├── models.py # Manager
│ │ ├── presentations/
│ │ │ ├── views/
│ │ │ └── serializers/
│ │ ├── permissions/
│ │ └── urls.py
│ │
│ ├── notifications/
│ │ ├── services/
│ │ │ └── email_service.py
│ │ └── tasks.py # Celery email tasks
│ │
│ └── reports/
│ ├── presentations/
│ │ ├── views/
│ │ └── serializers/
│ ├── services/ # Report generation
│ ├── tasks.py
│ └── urls.py
│
├── core/
│ ├── settings.py # Configurações
│ ├── urls.py # URLs raiz
│ ├── celery.py # Config Celery
│ ├── wsgi.py
│ ├── asgi.py
│ ├── storage_backends.py # MinIO storage
│ └── management/
│ └── commands/
│ ├── seed.py
│ ├── seed_all.py
│ └── setup_minio.py
│
├── templates/
│ └── emails/ # Templates de email
│ ├── welcome.html
│ ├── verification.html
│ └── password_reset.html
│
├── media/ # Arquivos (dev)
├── manage.py
├── requirements.txt
└── Dockerfile
Aplicações (Apps)
accounts
Gerencia autenticação e usuários do sistema.
Modelos:
User- Modelo de usuário customizadoPasswordResetToken- Tokens de reset de senhaEmailVerificationToken- Tokens de verificação de emailAccountDeletionRequest- Solicitações de exclusão
Endpoints:
/api/auth/login/- Login/api/auth/register/- Registro/api/auth/me/- Perfil do usuário logado/api/auth/verify-email/- Verificação de email/api/auth/password/reset/- Reset de senha
entrepreneurs
Gerencia perfis de empreendedores.
Modelos:
Entrepreneur- Perfil do empreendedorEntrepreneurDocument- Documentos de identificação
Endpoints:
/api/entrepreneurs/register/- Registrar como empreendedor/api/entrepreneurs/documents/<id>/- Acessar documentos
structuring_agents
Gerencia agentes estruturadores (mentores).
Modelos:
StructuringAgent- Perfil do agenteStructuringAgentAffiliationDocument- Documentos de vínculoStructuringAgentIdentificationDocument- Documentos de IDStructuringAgentApprovalRequest- Solicitações de aprovação
Endpoints:
/api/structuring-agents/register/- Registrar como agente/api/structuring-agents/business-plans/board/- Kanban Board/api/structuring-agents/business-plans/review/- Revisar plano/api/structuring-agents/mentorships/assume/- Assumir mentoria/api/structuring-agents/corrections/- Criar correção
business_plans
Gerencia planos de negócio e mentorias.
Modelos:
BusinessPlan- Plano de negócioBusinessPlanDocument- Documentos anexosMentorship- Mentoria vinculadaCorrectionRequest- Solicitações de correção
Endpoints:
/api/business-plans/- Listar planos/api/business-plans/create/- Criar plano/api/business-plans/<id>/- Detalhe do plano/api/business-plans/<id>/correct/- Enviar correções
managers
Gerencia gestores e aprovação de agentes.
Modelos:
Manager- Perfil do gestor
Endpoints:
/api/managers/approval-requests/- Listar solicitações/api/managers/approval-requests/approve/- Aprovar agente/api/managers/approval-requests/reject/- Rejeitar agente
notifications
Sistema de envio de emails.
Serviços:
EmailService- Serviço de envio de emails- Templates HTML para diferentes tipos de email
Tasks Celery:
send_welcome_email- Email de boas-vindassend_verification_email- Email de verificaçãosend_correction_request_email- Email de correção
reports
Geração de relatórios e métricas.
Endpoints:
/api/reports/- Obter relatório/api/reports/refresh/- Solicitar atualização/api/reports/task/<task_id>/- Status da tarefa
Padrão de Estrutura por App
Cada app segue uma estrutura consistente:
app_name/
├── __init__.py
├── models.py # Modelos do banco
├── presentations/
│ ├── __init__.py
│ ├── views/ # Views/ViewSets
│ │ ├── __init__.py
│ │ └── nome_view.py
│ └── serializers/ # Serializers
│ ├── __init__.py
│ └── nome_serializer.py
├── permissions/ # Permissões customizadas
│ ├── __init__.py
│ └── nome_permission.py
├── choices.py # Choices/Enums
├── tasks.py # Tasks Celery
├── admin.py # Admin Django
├── urls.py # URLs do app
└── migrations/ # Migrations
URLs
core/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('api/auth/', include('apps.accounts.urls')),
path('api/entrepreneurs/', include('apps.entrepreneurs.urls')),
path('api/structuring-agents/', include('apps.structuring_agents.urls')),
path('api/business-plans/', include('apps.business_plans.urls')),
path('api/managers/', include('apps.managers.urls')),
path('api/reports/', include('apps.reports.urls')),
# Documentação
path('api/schema/', SpectacularAPIView.as_view(), name='schema'),
path('api/docs/', SpectacularSwaggerView.as_view(), name='swagger-ui'),
path('api/redoc/', SpectacularRedocView.as_view(), name='redoc'),
]