Arquitetura
Packages
Pacotes compartilhados do monorepo
@repo/supabase
Pacote compartilhado que exporta o client Supabase e os tipos gerados do banco de dados.
Exports
{
"exports": {
".": "./src/index.ts",
"./client": "./src/client.ts",
"./types": "./src/types.ts"
}
}Uso
// Client tipado
import { supabase } from "@repo/supabase/client";
// Tipos do banco
import type { Database } from "@repo/supabase/types";
type Deal = Database["public"]["Tables"]["deals"]["Row"];Env vars
O client detecta automaticamente o ambiente:
- Vite:
VITE_SUPABASE_URL+VITE_SUPABASE_PUBLISHABLE_KEY(legadoVITE_SUPABASE_PUBLISHABLE_DEFAULT_KEY) - Next.js:
NEXT_PUBLIC_SUPABASE_URL+NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY(legadoNEXT_PUBLIC_SUPABASE_ANON_KEY)
Regenerar tipos
Apos alterar o schema do banco, regenere os tipos:
bunx supabase gen types typescript --project-id <id> > packages/supabase/src/types.ts@repo/eslint-config
ESLint flat config com quatro presets:
base— Regras base para todos os pacotesnext-js— Para apps Next.js (docs)react-internal— Para pacotes React internosvite— Para apps Vite (app)
Todos os scripts de lint usam --max-warnings 0.
@repo/typescript-config
Configuracoes TypeScript base:
base.json— Config base com strict modenextjs.json— Para apps Next.jsreact-library.json— Para pacotes Reactvite.json— Para apps Vite
TypeScript 5.9 com strict: true e noUncheckedIndexedAccess: true.