VendeeDocs
Backend

Banco de Dados

Tabelas, relacionamentos e tipos

O banco PostgreSQL possui 21 tabelas organizadas por dominio.

Tabelas principais

TabelaDescricao
workspacesEmpresas/escritorios (multi-tenant)
membersUsuarios vinculados a workspaces
dealsNegocios/oportunidades de venda
contactsContatos (pessoas)
companiesEmpresas (clientes)
activitiesAtividades/tarefas
pipelinesFunis de venda
stagesEtapas de um pipeline
commentsComentarios em negocios

Tabelas de configuracao

TabelaDescricao
deal_typesTipos de negocio
lead_sourcesOrigens de leads
loss_reasonsMotivos de perda
activity_typesTipos de atividade
productsProdutos/servicos

Tabelas de qualificacao

TabelaDescricao
qualification_formsFormularios
qualification_questionsPerguntas
qualification_answersOpcoes de resposta
qualification_responsesRespostas de um deal
qualification_response_itemsItems de resposta

Tabelas de auditoria

TabelaDescricao
pipeline_logsHistorico de movimentacao de etapas
event_logsLog de eventos gerais

Relacionamentos chave

  • dealscontacts, companies, stages, members (owner), lead_sources, loss_reasons, deal_types
  • activitiesdeals, members (owner), activity_types
  • stagespipelines
  • membersworkspaces
  • Todas as tabelas tem workspace_id para isolamento multi-tenant

Observacoes de modelagem

  • Em activities, os campos scheduled_at, start_time e end_time sao timestamp with time zone.
  • A UI captura uma data (YYYY-MM-DD) e horarios (HH:mm), mas o frontend deve persistir esses campos como timestamps ISO completos.

Tipos TypeScript

Gerados automaticamente com supabase gen types:

import type { Database } from "@repo/supabase/types";

// Row — tipo de leitura
type Deal = Database["public"]["Tables"]["deals"]["Row"];

// Insert — tipo para criacao (campos opcionais marcados com ?)
type DealInsert = Database["public"]["Tables"]["deals"]["Insert"];

// Update — tipo para atualizacao (todos os campos opcionais)
type DealUpdate = Database["public"]["Tables"]["deals"]["Update"];

On this page