Imperium is a web-based local network game streaming platform. It lets you register local hosts, discover them on your LAN, and stream from a selected host to a client via WebRTC.
apps/auth-server: Spring Boot service for authentication, host registry/status, and matchmaking.apps/client: Go-powered local client with a React-based web UI.apps/host: Go desktop app (Fyne) that registers a host, manages status, and streams via WebRTC.assets: Brand assets and logos.
- Auth Server: Java, Spring Boot, JPA (PostgreSQL), Flyway, JWT, Docker Compose.
- Client: Go (Gin), React, WebRTC, WebSockets.
- Host: Go (Fyne UI), WebRTC, FFmpeg wrapper, monitor detection.
These are development-oriented notes; production setup may differ.
- With Docker:
- From
apps/auth-server:docker compose up -d
- From
- With Gradle (requires JDK 21+):
- From
apps/auth-server:./gradlew bootRun(orgradlew.bat bootRunon Windows)
- From
- Configuration:
- See
src/main/resources/application.propertiesandapplication-prod.properties - DB migrations:
src/main/resources/db/migrations
- See
- Go backend (requires Go 1.21+):
- From
apps/client:go run ./cmd/main.go
- From
- Web UI (Vite + React):
- From
apps/client/webui:pnpm install && pnpm dev - Build:
pnpm build(artifacts go toapps/client/internal/webui/assets/)
- From
- Run (requires Go 1.21+ and FFmpeg in PATH for recording/streaming):
- From
apps/host:go run ./cmd/main.go
- From
- UI config:
apps/host/cmd/FyneApp.toml
- Binary:
apps/host/imperium-host.exe(may be present for quick local testing)
All assets are available in
assets/.
This project is under active development; APIs and flows may change.


