@bstockwelldev/supabase-kit
v0.1.0
Published
Supabase client factories and cookie adapters for @bstockwelldev Next.js SaaS apps
Downloads
74
Readme
@bstockwelldev/supabase-kit
Supabase client factories, cookie adapters, and URL guards extracted from tabletop-studio.
Install
Public scoped package on npm (same registry pattern as @bstockwelldev/prompt-rubric). No auth required to install.
pnpm add @bstockwelldev/supabase-kit @bstockwelldev/env-kitPublishing: see codex-apps/.npmrc.example for NPM_TOKEN when releasing.
Local sibling development:
{
"dependencies": {
"@bstockwelldev/supabase-kit": "file:../codex-apps/packages/supabase-kit"
}
}API
| Zone | Export | Description |
| ---- | ------ | ----------- |
| Z1 | createServerClient | SSR server client (@supabase/ssr) |
| Z1 | createAdminClient | Service-role client (@supabase/supabase-js) |
| Z1 | createAnonClient | Anon-key client for RLS reads |
| Z1 | createBrowserClient | Browser client (@supabase/ssr) |
| Z2 | buildCookieAdapter | Next.js cookies() → SSR adapter |
| Z2 | resolveSupabaseConfig | Config from injected env getters |
| Z3 | assertSupabaseUrlNotVercel | Reject misconfigured Vercel URLs |
All client factories accept a generic Database type and schema string from the consuming app.
Usage
import type { Database } from '@/types';
import { createServerClient } from '@bstockwelldev/supabase-kit/server';
import { getSupabaseUrl, getSupabaseServiceRoleKey, getSupabaseDbSchema } from '@/lib/supabaseEnv';
export async function createServerClient() {
const { cookies } = await import('next/headers');
return createServerClient<Database, 'tabletop_studio'>({
url: getSupabaseUrl(),
apiKey: getSupabaseServiceRoleKey(),
schema: getSupabaseDbSchema() as 'tabletop_studio',
}, { cookieStore: await cookies() });
}Peer dependencies
@supabase/ssr@supabase/supabase-js@bstockwelldev/env-kitnext(optional — only needed when using Next.jscookies()in app wrappers)
