MuseMVP Docs
Database

Database Configuration

Start with a development database, inspect your data, and prepare a separate production database.

Web Cloudflare uses D1, accessed through the DB binding. Start with a local development database, then provision remote D1 for production.

Before You Start

Install dependencies at the repository root. Use a new development database for first setup. If this is an existing customized database, read Updating Your Project before applying migrations.

Local D1

pnpm muse:init --yes --app cloudflare
pnpm db:seed:d1
pnpm dev:cf

Local D1 comes from Wrangler's DB binding. No DATABASE_URL or Postgres service is needed. To create remote resources, set names/IDs, and apply remote migrations, follow Cloudflare Deployment.

Check Your Result

  • Initialization and the matching seed command complete without database errors.
  • The development user can sign in and saved account changes remain after refresh.
  • Workers data remains in the local D1 database, separate from remote production data.

Common Problems

ProblemFix
D1 binding missingCheck DB in Workers Wrangler config; adding DATABASE_URL does not fix D1
Old production data existsBack up and design incremental migrations; do not replay the fresh-install baseline

When You Add Tables

The schema is packages/db/src/schema-d1.ts. Generate the matching database migrations. Shared queries in packages/db/src/queries/ receive db first; application wrappers bind the driver. Components must not access the database directly.

D1 rejects interactive transaction() calls. Use the supported batch() path and test atomicity and failures.

On this page