Backend
Banco de Dados
Tabelas, relacionamentos e tipos
O banco PostgreSQL possui 21 tabelas organizadas por dominio.
Tabelas principais
| Tabela | Descricao |
|---|---|
workspaces | Empresas/escritorios (multi-tenant) |
members | Usuarios vinculados a workspaces |
deals | Negocios/oportunidades de venda |
contacts | Contatos (pessoas) |
companies | Empresas (clientes) |
activities | Atividades/tarefas |
pipelines | Funis de venda |
stages | Etapas de um pipeline |
comments | Comentarios em negocios |
Tabelas de configuracao
| Tabela | Descricao |
|---|---|
deal_types | Tipos de negocio |
lead_sources | Origens de leads |
loss_reasons | Motivos de perda |
activity_types | Tipos de atividade |
products | Produtos/servicos |
Tabelas de qualificacao
| Tabela | Descricao |
|---|---|
qualification_forms | Formularios |
qualification_questions | Perguntas |
qualification_answers | Opcoes de resposta |
qualification_responses | Respostas de um deal |
qualification_response_items | Items de resposta |
Tabelas de auditoria
| Tabela | Descricao |
|---|---|
pipeline_logs | Historico de movimentacao de etapas |
event_logs | Log de eventos gerais |
Relacionamentos chave
deals→contacts,companies,stages,members(owner),lead_sources,loss_reasons,deal_typesactivities→deals,members(owner),activity_typesstages→pipelinesmembers→workspaces- Todas as tabelas tem
workspace_idpara isolamento multi-tenant
Observacoes de modelagem
- Em
activities, os camposscheduled_at,start_timeeend_timesaotimestamp 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"];