The WarmDesk seed program: fill your database with realistic demo data


A fresh WarmDesk install starts with an empty database. That is perfect for production, but awkward when you want to show the product: boards, charts, direct messages, and reports all look best when there is something to click.

The seed program solves that. It is a small Go commandβ€”distributed as warmdesk-seed next to the main warmdesk binaryβ€”that populates the database with a consistent, realistic dataset: multiple projects (Kanban and Scrum), a hundred-plus cards with markdown descriptions, customers, contracts, group chats, time entries, and more.

What the seed does

In one run, the tool creates:

  • System settings β€” default column and label names for new projects, plus company name, logo path, and login branding so the login screen looks polished immediately.

  • Users β€” demo accounts (global roles from admin down to viewer) and DiceBear avatars.

  • A persistent system admin β€” the tonk account is created if missing and is not removed when you use --reset, so your own admin login survives demo wipes.

  • Six projects β€” including Kanban boards (e.g. Website Redesign, Marketing Campaigns) and Scrum projects (Product Platform, API Platform) with columns, labels, sprints, releases, and card history for analytics charts.

  • Over a hundred cards β€” assignments, labels, priorities, dates, sub-cards, cross-references, checklists, comments, and rich Markdown bodies (bugs with reproduction steps, features with acceptance criteria).

  • Discussion topics β€” threaded conversations inside projects.

  • Direct and group conversations β€” realistic message history for messaging UI and notifications.

  • Customers and contracts β€” CRM-style data tied to projects.

  • User groups β€” e.g. Frontend Team, DevOps Team, with memberships and access patterns.

  • Time entries β€” weeks of sample data for the time-reporting and weekly grid views.

The script is idempotent: if it finds an existing demo.admin user, it exits without duplicating data, unless you pass --reset.

How to run it

From the repository (development)

Run from the backend directory so the module path resolves correctly:

cd backend
go run ./cmd/seed

Optional flags:

go run ./cmd/seed --config /path/to/warmdesk.yaml   # use a specific config file
go run ./cmd/seed --reset                           # remove demo data first, then re-seed

The --reset path deletes records associated with the known demo users and projects (by username and project slug), then rebuilds the demo world.

From a release bundle

Release archives ship warmdesk-seed alongside warmdesk. Use the same working directory and config as the server (so the database DSN matches):

cd dist
./warmdesk-seed
./warmdesk-seed --reset

Example: first-time seed output

Below is real output from go run ./cmd/seed against a local SQLite database. Timestamps and row counts may differ slightly as the dataset evolves between releases.

2026/05/10 13:25:56 Connected to sqlite database
🌱 Seeding demo data…

β†’ Configuring system settings…
β†’ Creating users…
   Created system admin: tonk (tonk@smartowl.nl)
   Created 10 demo users (password for all: demo1234)
β†’ Creating projects…
   Created 6 projects
β†’ Starring projects…
   Starred 23 project–user pairs
β†’ Creating cards…
   Created 115 cards
β†’ Creating sprints for scrum projects…
   Created 11 sprints
β†’ Creating card history for CFD chart…
   Created 123 card history records
β†’ Creating releases…
   Created 3 releases
β†’ Creating card cross-references…
   Created 6 card cross-references
β†’ Creating topics…
   Created 9 topics
β†’ Creating conversations…
   Created 6 conversations (49 messages)
β†’ Creating customers and contracts…
   Created 3 customers with contracts
β†’ Creating groups…
   Created 3 groups
β†’ Creating time entries…
   Created 60 time entries for 5 users

βœ… Demo data seeded successfully!

  Accounts (password: demo1234)
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ Username            β”‚ Display name        β”‚ Role   β”‚
  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
  β”‚ tonk                β”‚ Ton Kersten         β”‚ admin  β”‚  ← system admin (not reset)
  β”‚ demo.admin          β”‚ Alex Admin          β”‚ admin  β”‚
  β”‚ demo.sarah          β”‚ Sarah Chen          β”‚ user   β”‚  ← project admin: website-redesign
  β”‚ demo.marc           β”‚ Marc Dubois         β”‚ user   β”‚  ← project admin: mobile-app-v2
  β”‚ demo.lisa           β”‚ Lisa Park           β”‚ user   β”‚  ← project admin: devops-infra
  β”‚ demo.priya          β”‚ Priya Nair          β”‚ user   β”‚
  β”‚ demo.james          β”‚ James O'Brien       β”‚ user   β”‚
  β”‚ demo.elena          β”‚ Elena Kovač         β”‚ user   β”‚
  β”‚ demo.raj            β”‚ Raj Sharma          β”‚ user   β”‚
  β”‚ demo.viewer         β”‚ Victor Viewer       β”‚ viewer β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The command ends with a summary box of accounts, projects, cards, conversations, customers, groups, and starred projectsβ€”handy for checking that everything you care about landed in the database.

When data is already present

If you run the seed again without --reset, it stops early:

βœ“ Demo data already present (username 'demo.admin' found).
  Run with --reset to wipe and re-seed.

That guard avoids accidental duplicates and keeps CI or scripted installs predictable.

Logging in after a seed

All demo users share the same password documented in the summary: demo1234 (change it immediately on any machine exposed to a network).

Start the server, open the WarmDesk URL, and sign in as demo.admin or any listed demo userβ€”or as tonk if that account was created on your system.

Why ship a seed program at all?

Self-hosted software is judged in minutes. The seed program gets a reviewer from β€œempty columns and zero charts” to a believable team workspace in one command, without importing opaque SQL dumps or clicking through dozens of admin screens.

If you maintain a WarmDesk instance for training or sales demos, keep warmdesk-seed --reset in your back pocket: wipe, re-seed, and you are back to a known-good story for every session.