Skip to content

Getting started

Run the whole stack locally in five commands. You need Podman (or Docker), Node ≥ 22, and pnpm.

Terminal window
podman compose -f infra/compose.yaml up -d postgres # Postgres 16 on :5434
pnpm install
pnpm --filter @lims-core/db db:migrate
pnpm --filter @lims-core/api db:seed-demo # demo study, site, users
pnpm dev # api :3001, web :5174

Open http://localhost:5174 and sign in with one of the seeded demo accounts.

The seed creates one study (DEMO-001, site SITE-01), a freezer hierarchy, a small test catalog, and four users:

UserPasswordRole
tchenlims-demo-2026!Technician — accession, store, order, enter results
mgarcialims-demo-2026!Lab manager — verify and sign
rpatellims-demo-2026!Accessioner — accession and store only
adminlims-admin-2026!Lab admin + system admin

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:

  1. Sign in as tchen and accession a specimen.
  2. Label and store it in a freezer position.
  3. Order a test and enter a result.
  4. Sign out, sign in as mgarcia, verify the result, and e-sign it — the password step-up will ask for mgarcia’s password again.
  5. 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.

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.