Skip to main content

Opções de Banco

OpçãoIndicado paraCusto
NeonProdução + Preview branchesFree tier generoso
SupabaseProdução + realtimeFree tier
PostgreSQL localDesenvolvimentoGratuito
PostgreSQL no VPSSelf-hosted + baixo custoEstá no VPS
O Neon é o banco recomendado porque suporta branches de banco de dados — você pode ter uma branch preview para testes e main para produção, análogo ao Git.

Configuração com Neon

  1. Crie uma conta em neon.tech
  2. Crie um novo projeto
  3. Copie as duas strings de conexão:
    • PooledDATABASE_URL
    • DirectDATABASE_URL_UNPOOLED
DATABASE_URL="postgresql://user:pass@ep-xxx-yyy.us-east-1.aws.neon.tech/neondb?sslmode=require"
DATABASE_URL_UNPOOLED="postgresql://user:pass@ep-xxx-yyy.us-east-1.aws.neon.tech/neondb?sslmode=require"

Comandos Prisma

ComandoDescrição
pnpm prisma migrate devCria e aplica migration em desenvolvimento
pnpm prisma migrate deployAplica migrations pendentes em produção
pnpm prisma migrate resetReseta o banco e re-aplica tudo (apenas dev)
pnpm prisma db seedPopula com dados iniciais
pnpm prisma studioUI visual para o banco
pnpm prisma generateRegenera o Prisma Client
pnpm prisma db pushSincroniza schema sem criar migrations

Schema Principal

O schema está em prisma/schema.prisma. Os modelos principais são:
model Organization { ... }   // Multi-tenant
model User { ... }            // Autenticação + roles
model Teacher { ... }         // Perfil de professores
model Student { ... }         // Perfil de alunos
model Candidate { ... }       // Perfil de candidatos
model Form { ... }            // Testes/Formulários
model Question { ... }        // Questões do teste
model Option { ... }          // Opções de múltipla escolha
model Submission { ... }      // Respostas e resultados
model TestAssignment { ... }  // Aplicação de teste (token único)

Backup do Banco

Backup via pg_dump (VPS)

pg_dump $DATABASE_URL > backup_$(date +%Y%m%d).sql

Backup via plataforma

Acesse Admin → Gerenciamento de Dados → Gerar Backup para exportar um JSON completo via API da plataforma.

Soft Delete

Modelos que suportam soft delete têm o campo deletedAt: DateTime?. Registros excluídos não são removidos do banco — apenas marcados com a data de exclusão e filtrados automaticamente nas queries.