System architecture
Current deployment layout and service status. Recorder state is read from the shared recordings volume.
Architecture diagram
┌─────────────┐
│ Browser │
└──────┬──────┘
│ http
▼
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ nginx │────▶│ Web (Next) │────▶│ Media API │
│ :80 │ │ :3000 │ │ :8081 │
└─────────────┘ └──────────────┘ └──────┬──────┘
│
┌────────────────────────┘
│ RECORD_DIR (e.g. /recordings)
▼
┌─────────────┐ ┌─────────────────┐
│ Recorder │────▶│ /dev/video0 │
│ :8080 │ │ /dev/snd (opt) │
└──────┬──────┘ └─────────────────┘
│
▼
index.json, .mp4 segments, .recorder_status.json
.recorder_errors.jsonl
┌─────────────────────────────────────────────────────────┐
│ AWS: CodeCommit → CodePipeline → CodeBuild → (Sonar) │
└─────────────────────────────────────────────────────────┘Service status
Loading…
Components
nginx — Reverse proxy on port 80; routes to Web UI and Media API.
Web (Next.js) — Frontend; talks to Media API for recordings and streams.
Media API — Serves recordings list, playback streams, stats, services, and errors.
Recorder — Captures from HDMI device (/dev/video0), optionally audio (/dev/snd); writes segments and index to RECORD_DIR.
CodePipeline — CI/CD: build, test, coverage, optional SonarQube; deploys from CodeCommit.