- Backend: Rust + Actix Web + Actix actors (WebSockets supported)
- Frontend: Vite (uses esbuild in dev pipeline; fast builds)
- Static assets:
- embedded into the Rust binary (production / Docker)
- served from the filesystem (fast dev loop)
flowchart TD
UI_SRC["Frontend source code (Vite app)"] -->|"Build frontend files"| UI_DIST["Built frontend files (dist folder)"]
SRV_SRC["Backend source code (Rust server)"] -->|"Compile backend executable"| SRV_BIN["Backend executable (server binary)"]
UI_DIST -. "Embedded into" .-> SRV_BIN
UI_DIST ==>|"HTTP requests"| SRV_BIN
UI_DIST ==>|"WebSocket connection"| SRV_BIN
bash scripts/watch-ui.shIn another terminal:
bash scripts/run.shOpen http://localhost:8080.
bash scripts/run.sh embeddedIf the frontend wasn’t built yet, you’ll see a helpful placeholder page.
docker compose up --buildStop:
docker compose downNote: the Docker build produces a statically linked Linux binary (musl) so the runtime image can be fully minimal.
This project is licensed under CC BY 4.0. See LICENSE.