Plataforma de monetização de dados com consentimento explícito, focada em conformidade com a LGPD e o Open Finance brasileiro.
- Next.js 15 (App Router) + TypeScript + Tailwind CSS
- Prisma (PostgreSQL) — modelos: Lead, User, Consent, ConsentLog, DataConnection
- NextAuth v4 — autenticação com suporte a MFA (TOTP)
- Pino — logging estruturado de auditoria
- Jest + Testing Library — testes unitários (30 testes)
- Playwright — testes end-to-end
- Husky + lint-staged — hooks de pre-commit
/dashboard/consent— Dashboard onde o usuário visualiza, revoga e exporta seus consentimentoscomponents/consent-engine/ConsentCard— Card de consentimento com status e botão de revogaçãocomponents/consent-engine/ConsentCheckIn— Fluxo de aceite granular por finalidade (não "aceite tudo")components/consent-engine/ConsentDashboard— Dashboard com filtros e exportação
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/consent |
Lista consentimentos do usuário autenticado |
POST |
/api/consent |
Registra novo consentimento granular |
PATCH |
/api/consent/:id |
Revoga consentimento ativo |
GET |
/api/consent/export |
Portabilidade de dados (Art. 18, V LGPD) |
| Método | Endpoint | Descrição |
|---|---|---|
POST |
/api/open-finance/connect |
Inicia conexão de conta bancária |
POST |
/api/open-finance/webhook |
Recebe eventos do provedor (HMAC verificado) |
/privacy— Centro de Privacidade dinâmico (bases legais, direitos, dados processados)/auth/signin— Login com suporte a MFA/dashboard/consent— Gerenciamento de consentimentos
pnpm install
pnpm devAcesse http://localhost:3000.
# 1. Configure as variáveis de ambiente
cp .env.example .env.local
# Edite .env.local com suas chaves
# 2. Inicialize o banco de dados (requer PostgreSQL acessível via DATABASE_URL)
pnpm prisma migrate dev --name consent_engine_mvp
# 3. Inicie com persistência ativada
PERSIST_LEADS=true pnpm dev| Variável | Padrão | Descrição |
|---|---|---|
DATABASE_URL |
— | URL do banco PostgreSQL (ex.: postgresql://user:password@host:5432/databank?sslmode=require) |
NEXTAUTH_URL |
— | URL base da aplicação (ex.: http://localhost:3000) |
NEXTAUTH_SECRET |
— | Segredo JWT para NextAuth (gere com openssl rand -hex 32) |
LOG_LEVEL |
info |
Nível de log do Pino |
PERSIST_LEADS |
false |
Se true, salva leads no banco via Prisma |
OPEN_FINANCE_PROVIDER |
— | pluggy ou belvo |
OPEN_FINANCE_CLIENT_ID |
— | Client ID do provedor Open Finance |
OPEN_FINANCE_CLIENT_SECRET |
— | Client Secret do provedor Open Finance |
OPEN_FINANCE_WEBHOOK_SECRET |
— | Segredo HMAC para verificação de webhooks |
OPEN_FINANCE_MOCK |
false |
Se true, usa respostas mock (sem credenciais reais) |
Opção A — Neon (recomendado para Vercel):
- Acesse neon.tech e crie um projeto.
- Copie a connection string no formato
postgresql://user:password@ep-xxx.region.aws.neon.tech/dbname?sslmode=require.
Opção B — Supabase:
- Acesse supabase.com e crie um projeto.
- Em Settings → Database, copie a URI de conexão do modo Session (porta 5432).
No painel do seu projeto na Vercel (Settings → Environment Variables), adicione:
| Variável | Valor |
|---|---|
DATABASE_URL |
Connection string PostgreSQL obtida no passo 1 |
NEXTAUTH_URL |
URL do projeto na Vercel (ex.: https://seu-app.vercel.app) |
NEXTAUTH_SECRET |
Saída de openssl rand -hex 32 |
Antes do primeiro deploy (ou ao modificar o schema), execute:
# Gera e aplica as migrations no banco remoto
DATABASE_URL="<sua-connection-string>" pnpm prisma migrate deploy# Via CLI da Vercel
vercel --prodOu conecte o repositório GitHub ao seu projeto na Vercel e cada push para main fará o deploy automaticamente.
Veja COMPLIANCE.md para detalhes sobre:
- Bases legais (Art. 7º e 10 LGPD)
- Arquitetura do Motor de Consentimento
- Direitos dos titulares (Art. 18 LGPD)
- Open Finance (Resolução Conjunta nº 1 BACEN/CMN)
- Roadmap de conformidade
pnpm testCobertura dos componentes do Motor de Consentimento:
ConsentCard— 10 testesConsentCheckIn— 9 testesConsentDashboard— 8 testesCTAForm— 3 testes
pnpm playwright install --with-deps
pnpm test:e2e# Sobe o banco PostgreSQL e a aplicação Next.js
docker compose up --buildO docker-compose.yml inclui um serviço db (PostgreSQL 16) e aguarda sua disponibilidade antes de iniciar a aplicação (healthcheck).
O workflow .github/workflows/ci.yml executa lint, testes unitários e testes e2e em cada push/PR.