Local Supabase startup, sync, reset, seeds, storage, and generated types.
The local Supabase stack backs the SaaS and API apps during development.
pnpm supabase:start
pnpm supabase:syncThe sync task applies the configured declarative schema and seeds. OAuth-related warnings about missing Google credentials are safe unless you are testing OAuth.
Use reset only when a clean local database is intended:
pnpm supabase:resetAfter reset, browser sessions from the previous local auth database are stale. Sign in again with the seeded test account.
test@example.comPassword123!tractor-service, bike-scooter-shopAll seeded users share the same password. Useful role-specific accounts include owner@example.com for finance/settings, crm.editor@example.com for customers and quote drafting, assets.editor@example.com for catalog and inventory, viewer@example.com for read-only checks, and external@example.com for no-organization access.
Seed files provide deterministic coverage for customers, contacts, roles, teams, products, inventory, customer assets, tasks, quotes, quote templates, invoices, invoice templates, invitations, billing read models, AI chat history, agent runs, and cross-links between tasks, quotes, invoices, and customer assets.
Storage buckets are configured through supabase/config.toml and seeded from supabase/seed-buckets/. Bucket ids match product features: users, customers, organization, assets, products, files, knowledge, ai, integrations, audit-logs, and workflows. The reset flow recreates those local buckets and loads public seed objects from the matching folders. Object paths are UUID-first ({orgId|userId}/…); never use org slugs as the tenant folder.
On a hosted project, create the eleven new buckets and delete the old ids after deploy. Existing hosted objects are discarded for this cutover; path columns 404 until objects are re-uploaded or the remote database is reset.
Regenerate packages/supabase-runtime/src/types/database.generated.ts after schema changes. Include both public and graphql_public schemas so generated types do not drop GraphQL-related definitions.