Pular para o conteúdo
🗄️ SUPERDB DATABASE

Postgres sólido,
multi-tenant nativo.

Postgres 15 gerenciado com SQL Editor em PT-BR, diagrama de schema, tela de saúde do projeto e backup a cada 6 horas. RLS-first pra multi-tenant, com o mesmo Postgres + PostgREST do Supabase.

O Postgres que seu time usa todo dia.

SQL Editor, diagrama de schema, tabelas e saúde do projeto — em português, no painel do SuperDB.

app.superdb.com.br/projects/condominio-saas/sql
1-- pega faturamento do mês por tenant, com RLS aplicada
2select
3  t.name as tenant,
4  count(*) as notas,
5  sum(i.valor_brl) as total_brl
6from invoices i
7join tenants t on t.id = i.tenant_id
8where i.created_at >= date_trunc('month', now())
9  and i.status = 'paga'
10group by t.name
11order by total_brl desc
12limit 10;
tenantnotastotal_brl
Condomínio Jardins184R$ 142.380,00
Padaria do Zé97R$ 88.120,50
Loja Maria Têxtil63R$ 54.900,00
Coop Cafeicultores SP41R$ 38.215,80
app.superdb.com.br/projects/condominio-saas/database/schema
📋 users
id PKuuid
emailtext
cpftext
org_id FKuuid
created_attimestamptz
📋 organizations
id PKuuid
nametext
cnpjtext
plantext
created_attimestamptz
📋 tasks
id PKuuid
titletext
user_id FKuuid
org_id FKuuid
statustext
due_attimestamptz
app.superdb.com.br/projects/condominio-saas/advisors
NívelAvisoO que fazer
críticoSem RLS e legível pela anon key: leadsligue a RLS e crie as policies
críticoRole anon com escrita em: pedidosrevogue a escrita da anon
avisoFK sem índice: tasks.org_idcrie o índice
avisoFunção SECURITY DEFINER sem search_path fixo: resumo_mesfixe o search_path
infoAPI key antiga: app-v1gere uma nova e troque
app.superdb.com.br/projects/condominio-saas/database/tasks
idtitlestatusdue_at
4821Trocar lâmpadas do bloco Baberta12/09
4820Assembleia de outubroaberta20/09
4819Orçamento da pinturaatrasada05/09
4818Vistoria do elevadorfeita02/09

O que tem dentro.

Postgres puro + a camada de produtividade que faltava — pra você só pensar no produto.

🐘

Postgres 15 gerenciado

Postgres da comunidade, com as extensões do Supabase. Resultado de consulta sai em CSV pelo editor; o dump completo, com a equipe.

📝

SQL Editor em PT-BR

Autocomplete com as tabelas do projeto, histórico, consultas salvas e EXPLAIN com um clique.

🗂️

Editor de tabelas e diagrama ER

Crie tabelas e colunas por formulário, sem escrever DDL. O diagrama ER mostra as relações do schema de relance. Para FK, índice e o resto, o SQL Editor está do lado.

🔒

RLS ligada por padrão

Row Level Security ativa nas tabelas criadas pelo painel, e a tela Saúde aponta as que ficaram sem. auth.uid() e auth.jwt() nas policies.

🩺

Saúde do projeto

Aponta tabela sem RLS, escrita liberada para a anon key, FK sem índice, função SECURITY DEFINER sem search_path e chave antiga, dizendo como resolver.

🧩

Extensões

pgvector, PostGIS, pg_stat_statements e pg_graphql instalados no banco do seu projeto.

💾

Backup

Cópia do banco a cada 6 horas, cifrada e guardada fora do servidor. A restauração é feita com a equipe.

📊

API REST pronta

PostgREST: cada tabela vira endpoint REST, com o RLS aplicado. Sem código de backend.

🔑

SQL pela API

Com a chave de gestão (sdb_pmk_), o seu CI roda SQL e migrations no projeto.

🇧🇷

Dados no Brasil

Servidor em São Paulo: os dados ficam no Brasil.

⚡ VINDO DO SUPABASE

O mesmo Postgres,
os mesmos métodos.

O .from() do @superdb/client tem os métodos do @supabase/supabase-js: .select(), .insert(), .update(), .delete() e .rpc(), com filtros e joins pelo PostgREST.

O schema e as policies vêm com ajustes: aqui o schema do projeto é proj_<slug> e não existe auth.users. O guia de migração mostra o passo a passo.

// Antes — Supabase
import { createClient } from '@supabase/supabase-js'

// Depois — SuperDB
import { createClient } from '@superdb/client'

const db = createClient(
  process.env.NEXT_PUBLIC_SUPERDB_URL!,
  process.env.NEXT_PUBLIC_SUPERDB_ANON_KEY!,
  { project: 'meu-app' }
)

// A mesma query — o RLS é aplicado no Postgres
const { data, error } = await db
  .from('invoices')
  .select('id, valor_brl, tenants(name)')
  .eq('status', 'paga')
  .order('created_at', { ascending: false })
  .limit(10)

// E a policy usa auth.uid(), como no Supabase:
// create policy "dono lê" on invoices
//   for select using (dono = auth.uid());
🇧🇷 BRASIL-FIRST

Database pensado pra SaaS BR.

💸 Cobrança em real

Fatura em R$: cartão no mensal; PIX, boleto ou cartão no anual. Sem dólar e sem IOF.

🏢 Um projeto por cliente

Quem vende o mesmo app para vários clientes cria um projeto para cada um, pela API: banco, usuários e arquivos isolados.

💬 Painel e suporte em PT-BR

Painel inteiro em português, com erros e dicas em PT-BR. Suporte humano por chamado, em horário comercial do Brasil.

Pronto pra ter um Postgres sério?

No plano Grátis: 500 MB de banco e 10 GB de tráfego. Sem cartão.