Toast
Contributor

Seeding

Seed profiles, fixture data, and local development credentials.

Toast uses a profile-based seed system in shared/db/src/fixtures/.

Quick reference

td db seed
td seed:status
td db reset

What the seed script does

The seed script is idempotent. Running it again refreshes development data rather than duplicating it.

At a high level it:

  1. ensures the default site exists
  2. ensures the required site settings rows exist
  3. creates the seed users for the active profile
  4. clears and re-inserts content fixtures for that site

Profiles

Seed profile selection works like this:

  1. SEED_PROFILE if explicitly set
  2. NODE_ENV=developmentdevelopment
  3. otherwise → default

default profile

Uses the injected SEED_ADMIN_* environment variables.

From .env.example:

VariableDefault
SEED_ADMIN_EMAILadmin@ghost.org
SEED_ADMIN_PASSWORDadmin
SEED_ADMIN_NAMEAdmin

development profile

Loads richer fixed demo data from shared/db/src/fixtures/profiles/development/, including multiple users and sample content.


Local development login

For the standard local contributor flow, use:

  • Email: admin@ghost.org
  • Password: admin

If you explicitly switch to the development profile, the seeded users come from the fixture files instead.


Fixtures

Fixtures live here:

shared/db/src/fixtures/
├── profiles/
│   ├── default/
│   └── development/
│       ├── content.json
│       └── users.ts
├── load-profile.ts
└── types.ts

The development/content.json file contains sample TipTap documents used for local testing.


Checking seed status

td seed:status

This is especially useful when debugging fresh local environments or PR preview environments where setup may not have completed.


On this page