This commit is contained in:
Martino Ferrari
2026-04-25 22:56:09 +02:00
parent 8b548ba1c2
commit 986f6cd6d8
85 changed files with 11479 additions and 5050 deletions
+5 -11
View File
@@ -41,7 +41,7 @@ Two primary modes toggled via toolbar:
## Technology Stack
- **Backend:** Go 1.22+, single binary, `//go:embed` for frontend assets
- **Frontend:** Svelte 5 + TypeScript + Vite; plots via uPlot (time-series) and ECharts (others); edit canvas via Konva
- **Frontend:** Preact 10 + TypeScript; bundled by esbuild Go API (no npm/Node.js); plots via uPlot (time-series) and ECharts (others); all vendor JS/CSS checked into `web/vendor/`
- **Config:** TOML file + `UOPI_*` env var overrides (`github.com/BurntSushi/toml`)
- **WebSocket:** `nhooyr.io/websocket` (no CGo)
- **EPICS:** CGo bindings to `libca`; `gopher-lua` for synthetic signal Lua scripts
@@ -57,7 +57,10 @@ internal/datasource/# DataSource interface + EPICS + synthetic (Phases 23)
internal/dsp/ # DSP functions for synthetic (Phase 3)
internal/storage/ # interface XML persistence (Phase 6)
internal/api/ # REST handlers (Phase 1+)
web/ # Svelte source (npm); web/embed.go provides embed.FS to Go
web/ # Preact/TSX source; web/embed.go provides embed.FS to Go
web/src/ # TypeScript/TSX components (Preact)
web/vendor/ # vendored JS/CSS (preact, uplot, echarts) — no npm required
tools/buildfrontend/# esbuild Go API bundler (invoked by go generate)
web/dist/ # built frontend — generated, not committed
dist/ # compiled binary — generated, not committed
```
@@ -79,9 +82,6 @@ make frontend
# Run backend (dev mode, frontend must be running separately)
go run ./cmd/uopi
# Frontend dev server (proxies /api and /healthz to :8080)
cd web && npm run dev
# All tests
make test
@@ -90,12 +90,6 @@ go test ./internal/broker/... -run TestFanOut
# Go vet
go vet ./...
# Svelte type check
cd web && npm run check
# Svelte lint
cd web && npm run lint
```
## Key Architectural Notes