Current state
Architecture
Section titled “Architecture”- Single server host (Proxmox LXC) runs the full backend, frontend, observability stack, and ingress (Traefik).
- A secure tunnel from the server to the edge server exposes the platform to the public internet at the deployment URL.
- Two further VPS hosts exist but are unused.
- All environments collapse into one: the server serves dev playground, integration testing, and "production" simultaneously.
- 1,825 vitest unit tests covering frontend slices, middleware, components, and parsers.
- 147 Playwright end-to-end tests, but against the Vite dev server, not the built container.
- 11 backend handler unit tests for the LLM parse-ticket endpoint.
*.integration.tc.test.tssuites use Testcontainers. These are the only tests that exercise real wired services, and they only run in CI.- The legacy localhost-or-
VETA_BASE_URLsmoke suite has been ported tosmoke.full.tc.test.ts; see the smoke testing page.
- Every PR runs lint, typecheck, vitest, Playwright, CodeQL, secret scan, image builds.
- On
mainmerge, CI publishes container images toghcr.iowith the:latesttag. - A systemd auto-pull timer polls the server every ~5 minutes, pulls new
:latestimages, and runsdocker compose up -dwhen the main-branch SHA changes. - No pre-deploy verification beyond container healthchecks. No staging. No automated rollback. No on-failure alerts (the synthetic probe shipped 2026-05-15 covers that gap; see target architecture for current monitoring state).
Observability
Section titled “Observability”- LGTM stack on the server (Loki + Grafana + Tempo + Prometheus + Alloy).
- Frontend ships warnings and errors to Loki via the gateway to kafka-relay path (after PR #191).
- Backend services emit structured logs and OTLP traces.
- No SLO dashboards. No alerts beyond the synthetic probe. No formal error-budget tracking yet.
What this combination produces
Section titled “What this combination produces”Failures are detected by:
- A human notices the UI is broken.
- Asks an engineer.
- Engineer SSHes into the server to diagnose.
- Engineer fixes manually.
That is the same loop a hobbyist project runs. It is not the loop a regulated trading venue runs.