Running the terminology suite locally
Two unified scripts run any suite module’s backend and frontend. Each backend is its own standalone Gradle build
under modules/<module>/backend (Flint is modules/tx-fhir); each frontend is a Vite SPA run inside an EMR
checkout where the @helex/* source aliases resolve (the two-location dev model — see
development.md).
Backends — scripts/run_backend.sh <module>
| Module | Command | Port | Storage |
|---|---|---|---|
| TEDY 🧸 | ./scripts/run_backend.sh tedy | 18610 | Postgres — a disposable Docker one is started automatically (or supply TEDY_DB_URL/_USER/_PASSWORD, or TEDY_NO_DB=1). dev profile applies Liquibase. |
| Teagle 🦅 | ./scripts/run_backend.sh teagle | 18650 | stateless (no DB) |
| Flint 🔥🦎 | ./scripts/run_backend.sh flint | 18630 | in-memory (standalone engine; the tx-fhir library’s runnable app) |
| Ucumber 🥒 | ./scripts/run_backend.sh ucumber | 18670 | stateless (no DB) |
Override the port with PORT=…; TEDY’s Docker Postgres port with TEDY_PG_PORT=…. --server.port is applied
universally, so the module’s own port property doesn’t matter.
Frontends — scripts/run_frontend.sh <module> [emr-checkout]
| Module | Command | Proxies /txapi → |
|---|---|---|
| TEDY | ./scripts/run_frontend.sh tedy | TEDY_TARGET (default http://localhost:18610) |
| Teagle | ./scripts/run_frontend.sh teagle | TEAGLE_TARGET (default http://localhost:18650) |
The script writes VITE_TX_TARGET into modules/<module>/frontend/.env and delegates to scripts/dev.sh, which
runs Vite in the EMR checkout ($TEDY_EMR, else the tedy-main worktree) and opens /<module>/. For FHIR
operations, the frontend’s /api/tx/$expand/$lookup proxy target is set via TEDY_TX_FHIR_TARGET — point it at
the same backend (which now serves /fhir itself via Flint) to resolve concept pickers on the local stack.
Typical dev pairs
# TEDY editor, full stack on your own machine
./scripts/run_backend.sh tedy # :18610 (+ throwaway Postgres)
TEDY_TX_FHIR_TARGET=http://localhost:18610 ./scripts/run_frontend.sh tedy # :18620 → /tedy/
# Teagle aggregator
./scripts/run_backend.sh teagle # :18650
./scripts/run_frontend.sh teagle # → /teagle/ (once the Teagle frontend lands)
FHIR conformance harness (Flint)
See the run-fhir-tx-ecosystem-tests auto-memory: run ./scripts/run_backend.sh flint and point the
validator_cli.jar txTests harness at http://localhost:18630/fhir (load each suite’s setup CodeSystems first).
Notes
- Real deployment URLs never live in committed code — only in the gitignored
.envfiles. scripts/check-naming.shgates the tree for forbidden vendor strings; run it before committing.