VendeeDocs
Arquitetura

Packages

Pacotes compartilhados do monorepo

@repo/supabase

Pacote compartilhado que exporta o client Supabase e os tipos gerados do banco de dados.

Exports

package.json
{
  "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 (legado VITE_SUPABASE_PUBLISHABLE_DEFAULT_KEY)
  • Next.js: NEXT_PUBLIC_SUPABASE_URL + NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY (legado NEXT_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 pacotes
  • next-js — Para apps Next.js (docs)
  • react-internal — Para pacotes React internos
  • vite — 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 mode
  • nextjs.json — Para apps Next.js
  • react-library.json — Para pacotes React
  • vite.json — Para apps Vite

TypeScript 5.9 com strict: true e noUncheckedIndexedAccess: true.

On this page