CARONTE — Manual Técnico v1.0
🚣 "O barqueiro que guia famílias pelo rio burocrático pós-óbito"
1. Visão Geral da Arquitetura
O CARONTE é uma aplicação web full-stack composta por:
| Camada |
Tecnologia |
Porta Padrão |
| Frontend |
Next.js 14 (App Router) + React 18 + Tailwind CSS |
3102 |
| Backend |
FastAPI (Python 3.12) + SQLAlchemy Async |
8102 |
| Banco de Dados |
PostgreSQL (produção) / SQLite (desenvolvimento) |
5432 |
| Proxy Reverso |
Nginx + Cloudflare |
80/443 |
| Process Manager |
PM2 |
— |
Diagrama de Arquitetura
2. Estrutura de Pastas
3. Modelos de Dados
3.1 Usuario
| Campo |
Tipo |
Descrição |
| id |
Integer (PK) |
Auto-increment |
| nome |
String |
Nome completo |
| email |
String (unique) |
Email de login |
| senha_hash |
String |
Hash bcrypt |
| telefone |
String (nullable) |
Telefone |
| created_at |
DateTime |
Auto |
3.2 Familia
| Campo |
Tipo |
Descrição |
| id |
Integer (PK) |
Auto-increment |
| nome |
String |
Nome da família |
| usuario_id |
Integer (FK) |
Usuário responsável |
| created_at |
DateTime |
Auto |
3.3 MembroFamilia
| Campo |
Tipo |
Descrição |
| id |
Integer (PK) |
Auto-increment |
| familia_id |
Integer (FK) |
Família |
| nome |
String |
Nome do membro |
| parentesco |
String |
Grau de parentesco |
| cpf, telefone, email |
String (nullable) |
Dados de contato |
3.4 Falecido
| Campo |
Tipo |
Descrição |
| id |
Integer (PK) |
Auto-increment |
| familia_id |
Integer (FK) |
Família |
| nome |
String |
Nome completo |
| cpf |
String (nullable) |
CPF |
| data_nascimento |
Date (nullable) |
Nascimento |
| data_obito |
Date |
Data do óbito |
| causa_obito |
String (nullable) |
Causa |
| tipo_vinculo |
String |
empregado, aposentado, autonomo, servidor |
| empregador |
String (nullable) |
Nome do empregador |
| tinha_carteira_assinada |
Integer |
0/1 |
| tinha_fgts |
Integer |
0/1 |
| era_aposentado |
Integer |
0/1 |
| tinha_seguro_vida |
Integer |
0/1 |
| tinha_imoveis |
Integer |
0/1 |
| tinha_veiculos |
Integer |
0/1 |
| salario_estimado |
Float (nullable) |
Último salário |
3.5 ChecklistItem
| Campo |
Tipo |
Descrição |
| id |
Integer (PK) |
Auto-increment |
| familia_id |
Integer (FK) |
Família |
| falecido_id |
Integer (FK) |
Falecido |
| titulo |
String |
Título da tarefa |
| descricao |
Text (nullable) |
Descrição detalhada |
| fase |
String |
imediato, primeira_semana, 30_dias, 60_dias |
| categoria |
String |
certidoes, inss, fgts, inventario... |
| status |
String |
pendente, andamento, concluido |
| prazo_dias |
Integer (nullable) |
Prazo em dias |
| ordem |
Integer |
Ordem de execução |
| dependencia_id |
Integer (nullable) |
Item que precede |
3.6 Beneficio
| Campo |
Tipo |
Descrição |
| id |
Integer (PK) |
Auto-increment |
| familia_id |
Integer (FK) |
Família |
| falecido_id |
Integer (FK) |
Falecido |
| tipo |
String |
fgts, pis, pensao_morte, seguro_vida, rescisao |
| nome |
String |
Nome do benefício |
| descricao |
String (nullable) |
Descrição |
| status |
String |
identificado, em_processo, sacado |
| valor_estimado |
Float (nullable) |
Valor estimado |
| valor_sacado |
Float (nullable) |
Valor efetivamente sacado |
3.7 Documento
| Campo |
Tipo |
Descrição |
| id |
Integer (PK) |
Auto-increment |
| familia_id |
Integer (FK) |
Família |
| falecido_id |
Integer (FK, nullable) |
Falecido |
| tipo |
String |
procuracao, requerimento_fgts, peticao_pensao |
| nome |
String |
Nome do documento |
| arquivo_path |
String (nullable) |
Caminho do PDF |
| status |
String |
gerado, enviado, aprovado |
4. API — Endpoints
Base URL: /api/v1
4.1 Autenticação
| Método |
Endpoint |
Descrição |
Auth |
| POST |
/auth/registro |
Criar conta |
❌ |
| POST |
/auth/login |
Login (OAuth2 form) → JWT |
❌ |
| GET |
/auth/me |
Dados do usuário logado |
✅ |
4.2 Famílias
| Método |
Endpoint |
Descrição |
Auth |
| GET |
/familias/ |
Listar famílias do usuário |
✅ |
| POST |
/familias/ |
Criar família |
✅ |
| GET |
/familias/{id} |
Detalhe da família |
✅ |
| POST |
/familias/{id}/membros |
Adicionar membro |
✅ |
| GET |
/familias/{id}/membros |
Listar membros |
✅ |
| POST |
/familias/{id}/falecido |
Registrar falecido (gera checklist + benefícios) |
✅ |
| GET |
/familias/{id}/falecidos |
Listar falecidos |
✅ |
4.3 Checklist
| Método |
Endpoint |
Descrição |
Auth |
| GET |
/familias/{id}/checklist/ |
Listar itens do checklist |
✅ |
| PUT |
/familias/{id}/checklist/{item_id} |
Atualizar status |
✅ |
| GET |
/familias/{id}/checklist/proximo |
Próximo passo recomendado |
✅ |
4.4 Benefícios
| Método |
Endpoint |
Descrição |
Auth |
| GET |
/familias/{id}/beneficios/ |
Listar benefícios |
✅ |
| POST |
/familias/{id}/beneficios/scan |
Re-escanear benefícios |
✅ |
4.5 Documentos
| Método |
Endpoint |
Descrição |
Auth |
| GET |
/familias/{id}/documentos/ |
Listar documentos |
✅ |
| POST |
/familias/{id}/documentos/gerar |
Gerar PDF |
✅ |
| GET |
/familias/{id}/documentos/{doc_id}/download |
Download PDF |
✅ |
Tipos de documento suportados: procuracao, requerimento_fgts, peticao_pensao
4.6 Dashboard
| Método |
Endpoint |
Descrição |
Auth |
| GET |
/dashboard/ |
Resumo consolidado do usuário |
✅ |
5. Autenticação
- Método: JWT Bearer Token (OAuth2 Password Flow)
- Hash: bcrypt via passlib
- Algoritmo: HS256
- Expiração: 1440 minutos (24h)
- Header:
Authorization: Bearer <token>
6. Variáveis de Ambiente
| Variável |
Descrição |
Padrão |
DATABASE_URL |
URL de conexão ao banco |
sqlite+aiosqlite:///./caronte.db |
SECRET_KEY |
Chave secreta para JWT |
caronte-secret-key-change-in-production |
ALGORITHM |
Algoritmo JWT |
HS256 |
ACCESS_TOKEN_EXPIRE_MINUTES |
Expiração do token |
1440 |
UPLOAD_DIR |
Diretório de uploads |
./uploads |
Produção (PostgreSQL):
⚠️ Para PostgreSQL, adicionar asyncpg ao requirements.txt e usar driver postgresql+asyncpg://
7. Requisitos de Sistema
Backend
- Python 3.12+
- Dependências: FastAPI, SQLAlchemy, aiosqlite/asyncpg, python-jose, passlib, reportlab, pydantic-settings
Frontend
- Node.js 18+
- Next.js 14, React 18, Tailwind CSS, lucide-react
Produção
- Ubuntu 22.04+ / Debian 12+
- PostgreSQL 15+
- Nginx
- PM2 (Node.js process manager)
- Cloudflare (DNS + CDN)
8. Deploy de Produção
8.1 Backend
8.2 Frontend
8.3 Nginx
9. Serviços Inteligentes
9.1 Checklist Engine
Ao registrar um falecido, o sistema gera automaticamente um checklist burocrático personalizado baseado no perfil (tipo de vínculo, tinha FGTS, era aposentado, etc.). Os templates são carregados de checklist_templates.json e filtrados por condições.
9.2 Benefício Scanner
Analisa o perfil do falecido e identifica automaticamente benefícios elegíveis:
- FGTS (se tinha FGTS) — estimativa: 3.5x salário
- PIS/PASEP (se tinha carteira assinada) — estimativa: 0.8x salário
- Pensão por Morte (sempre) — estimativa: 12x salário
- Seguro de Vida (se tinha) — estimativa: 24x salário
- Verbas Rescisórias (se tinha carteira assinada) — estimativa: 2x salário
9.3 Document Generator
Gera PDFs profissionais via ReportLab:
- Procuração — representação perante órgãos
- Requerimento FGTS — saque por falecimento (Lei 8.036/90)
- Petição Pensão por Morte — requerimento INSS (Lei 8.213/91)
Documento gerado em 08/02/2026 — CARONTE v1.0