Getting started
Run the whole stack locally in five commands. You need Podman (or Docker), Node ≥ 22, and pnpm.
podman compose -f infra/compose.yaml up -d postgres # Postgres 16 on :5434pnpm installpnpm --filter @lims-core/db db:migratepnpm --filter @lims-core/api db:seed-demo # demo study, site, userspnpm dev # api :3001, web :5174Open http://localhost:5174 and sign in with one of the seeded demo accounts.
Demo accounts
Section titled “Demo accounts”The seed creates one study (DEMO-001, site SITE-01), a freezer hierarchy,
a small test catalog, and four users:
| User | Password | Role |
|---|---|---|
tchen | lims-demo-2026! | Technician — accession, store, order, enter results |
mgarcia | lims-demo-2026! | Lab manager — verify and sign |
rpatel | lims-demo-2026! | Accessioner — accession and store only |
admin | lims-admin-2026! | Lab admin + system admin |
Your first specimen
Section titled “Your first specimen”The fastest way to see the system’s point is to run one specimen end to end, switching accounts where the separation of duties requires it:
- Sign in as
tchenand accession a specimen. - Label and store it in a freezer position.
- Order a test and enter a result.
- Sign out, sign in as
mgarcia, verify the result, and e-sign it — the password step-up will ask formgarcia’s password again. - Open the audit trail and click Verify chain to prove nothing was altered along the way.
Every step you just performed is in that trail, attributed and hash-chained. The user guide walks each screen in detail.
What else the demo seeds
Section titled “What else the demo seeds”The seed also lands data so the wider workflows are worth clicking through immediately: a volume-tracked whole-blood specimen ready to aliquot, a received shipment and a delivered collection kit, a freezer box with real occupancy, a completed worksheet run, and a PSA QC control with a drift that warns then rejects on the Levey-Jennings chart.