Instalação
# Drop-in do Supabase (recomendado pra migrar)
npm install @superdb/supabase-compat
# Cliente nativo (mais recursos BR)
npm install @superdb/auth-js
@superdb/supabase-compat
Drop-in parcial do @supabase/supabase-js. O módulo .auth funciona completamente — delegado ao @superdb/auth-js. Os módulos .from(), .storage, .rpc() e .channel() estão implementados como stubs que lançam not_implemented na versão atual.
.from() retorna erro not_implemented. Para dados, use HTTP direto contra https://api.superdb.com.br/<tabela> (sem prefixo /rest/v1/), ou use @supabase/supabase-js com a URL base api.superdb.com.br.
createClient
import { createClient } from '@superdb/supabase-compat'
const db = createClient(
process.env.NEXT_PUBLIC_SUPERDB_URL!, // https://auth.superdb.com.br
process.env.NEXT_PUBLIC_SUPERDB_ANON_KEY!
)
Auth (funciona)
// Signup
await db.auth.signUp({ email, password })
// Login email/senha
await db.auth.signInWithPassword({ email, password })
// OAuth
await db.auth.signInWithOAuth({ provider: 'google' })
// Logout
await db.auth.signOut()
// Usuário atual
const { data: { user } } = await db.auth.getUser()
// Escutar mudanças de auth
db.auth.onAuthStateChange((event, session) => {
console.log(event, session)
})
Database (PostgREST) — use HTTP direto
O endpoint PostgREST é https://api.superdb.com.br — path raiz, sem /rest/v1/. Use fetch direto ou @supabase/supabase-js apontando para essa URL:
const ANON_KEY = process.env.NEXT_PUBLIC_SUPERDB_ANON_KEY!
const DATA_URL = 'https://api.superdb.com.br'
// Select
const res = await fetch(`${DATA_URL}/tasks?done=eq.false`, {
headers: { 'Authorization': `Bearer ${ANON_KEY}`, 'apikey': ANON_KEY }
})
const data = await res.json()
// Insert
await fetch(`${DATA_URL}/tasks`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${ANON_KEY}`, 'apikey': ANON_KEY,
'Content-Type': 'application/json', 'Prefer': 'return=minimal' },
body: JSON.stringify({ title: 'Comprar pão' })
})
import { createClient } from '@supabase/supabase-js'
// URL base = api.superdb.com.br (sem /rest/v1/)
const db = createClient('https://api.superdb.com.br', ANON_KEY)
const { data } = await db.from('tasks').select('*').eq('done', false)
await db.from('tasks').insert({ title: 'Comprar pão' })
await db.from('tasks').update({ done: true }).eq('id', taskId)
await db.from('tasks').delete().eq('id', taskId)
Storage
O Storage é acessível via https://storage.superdb.com.br. Use a API HTTP diretamente ou o cliente do Supabase Storage:
// Upload
const form = new FormData()
form.append('file', file)
await fetch('https://storage.superdb.com.br/object/avatares/user1.png', {
method: 'POST',
headers: { 'Authorization': `Bearer ${ANON_KEY}`, 'apikey': ANON_KEY },
body: form
})
// URL pública
const publicUrl = `https://storage.superdb.com.br/object/public/avatares/user1.png`
Realtime
O Realtime é acessível via wss://realtime.superdb.com.br. Use a biblioteca Supabase Realtime diretamente:
import { createClient } from '@supabase/supabase-js'
const rt = createClient('https://realtime.superdb.com.br', ANON_KEY)
const channel = rt.channel('tasks-changes')
.on('postgres_changes',
{ event: 'INSERT', schema: 'proj_meuapp', table: 'tasks' },
(payload) => console.log(payload.new)
)
.subscribe()
@superdb/auth-js
Cliente Auth nativo com features brasileiras: CPF, WhatsApp OTP, MFA TOTP, audit hash chain.
import { SuperDBAuth } from '@superdb/auth-js'
const auth = new SuperDBAuth({
url: process.env.SUPERDB_AUTH_URL!,
anonKey: process.env.SUPERDB_ANON_KEY!,
project: 'meu-projeto'
})
// Signup com CPF
await auth.signUp({
email: 'user@exemplo.com.br',
password: 'senha-segura',
data: { cpf: '123.456.789-09' }
})
// WhatsApp OTP
await auth.sendOTP({ phone: '+5511999998888', channel: 'whatsapp' })
// Verificar OTP
await auth.verifyOTP({ phone: '+5511999998888', token: '123456' })
// Enroll MFA TOTP
const { qrCode, secret } = await auth.mfa.enroll({ type: 'totp' })
Preview no Studio
Tudo que você faz pelo SDK aparece em tempo real no Studio. Veja seus dados, queries e logs em superdb.com.br/dash/<projeto>:
TypeScript
Ambos os SDKs são totalmente tipados:
import type { User, Session } from '@superdb/supabase-compat'
import type { SuperDBUser, MFAFactor } from '@superdb/auth-js'
Dica: Use supabase-compat se você já tem código Supabase. Use auth-js se quer aproveitar features 100% BR (CPF, WhatsApp, audit).