mirror of https://github.com/synctv-org/synctv
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
## Summary - add a `web-ui-dynamic` feature that serves a mutable Web distribution without compile-time embedding - add `server.web_ui_directory` and `SYNCTV_SERVER_WEB_UI_DIRECTORY`, with per-request disk reads, SPA fallback, security headers, and path containment checks - keep `web-ui` release builds embedded while allowing the same production binary and Docker image to use a mounted runtime directory - configure `make dev-serve` to use `synctv-web-ui/dist` and document both modes ## Docker behavior CI continues to build release images with `web-ui`, so embedded assets remain the default. Mounting a distribution and setting `SYNCTV_SERVER_WEB_UI_DIRECTORY` makes that directory authoritative at runtime. ## Verification - `cargo fmt --all -- --check` - `git diff --check` - `cargo test -p synctv-api-http --features web-ui-dynamic http::web_ui::tests` - `cargo test -p synctv-api-http --features web-ui http::web_ui::tests` - `cargo check -p synctv --features web-ui-dynamic` - `cargo check -p synctv --features web-ui` |
1 month ago | |
|---|---|---|
| .cargo | 2 months ago | |
| .config | 2 months ago | |
| .github | 1 month ago | |
| .sqlx | 1 month ago | |
| docs | 1 month ago | |
| helm/synctv | 1 month ago | |
| migrations | 1 month ago | |
| scripts | 1 month ago | |
| synctv | 1 month ago | |
| synctv-adapter | 1 month ago | |
| synctv-api | 1 month ago | |
| synctv-api-common | 1 month ago | |
| synctv-api-grpc | 1 month ago | |
| synctv-api-http | 1 month ago | |
| synctv-cluster | 1 month ago | |
| synctv-common | 1 month ago | |
| synctv-core | 1 month ago | |
| synctv-livestream | 1 month ago | |
| synctv-management | 1 month ago | |
| synctv-media-providers | 1 month ago | |
| synctv-proto | 1 month ago | |
| synctv-proto-build | 1 month ago | |
| synctv-proto-main | 1 month ago | |
| synctv-proto-playback-provider | 1 month ago | |
| synctv-proto-providers | 1 month ago | |
| synctv-proxy | 1 month ago | |
| synctv-realtime | 1 month ago | |
| synctv-web-ui | 1 month ago | |
| synctv-xiu | 1 month ago | |
| .dockerignore | 1 month ago | |
| .env.postgres.example | 2 months ago | |
| .env.redis.example | 2 months ago | |
| .env.synctv.example | 1 month ago | |
| .gitattributes | 1 month ago | |
| .gitignore | 1 month ago | |
| CONTRIBUTING.md | 2 months ago | |
| Cargo.lock | 1 month ago | |
| Cargo.toml | 1 month ago | |
| Dockerfile | 1 month ago | |
| LICENSE | 2 months ago | |
| Makefile | 1 month ago | |
| README.md | 1 month ago | |
| README.zh-CN.md | 1 month ago | |
| SECURITY.md | 2 months ago | |
| deny.toml | 2 months ago | |
| docker-compose.dev.yml | 1 month ago | |
| docker-compose.yml | 1 month ago | |
| rust-toolchain.toml | 1 month ago | |
| synctv.example.yaml | 1 month ago | |
README.md
SyncTV
SyncTV is a Rust implementation of a real-time synchronized video watching platform with media provider integration, livestreaming, HTTP/gRPC APIs, and Kubernetes-ready horizontal scaling.
Highlights
- Synchronized room playback with real-time state updates.
- Media providers for Bilibili, Twitch, YouTube, Douyin, TikTok, Huya, Douyu, AcFun, CCTV, Alist, Cloudreve, Emby/Jellyfin, FNOS, QNAP, Synology, Nextcloud, Seafile, TrueNAS, direct URLs, and livestream sources.
- RTMP push/pull, HLS, and HTTP-FLV livestream support.
- RTSP external pull with TCP/UDP transport and live HLS/HTTP-FLV remuxing.
- HTTP REST, public gRPC, WebSocket, management gRPC, metrics, RTMP, and STUN runtime surfaces.
- PostgreSQL-backed durable storage with optional Redis shared state, cache, rate limiting, and cluster coordination.
- Docker Compose and Helm deployment templates.
- Built-in management CLI and optional OpenAPI/Swagger UI.
- Astro Starlight documentation site with English and Simplified Chinese content.
Discussion and Contributors
Join the SyncTV Telegram discussion to talk with users and contributors about deployment, operations, media providers, client development, and the product roadmap.
Documentation
Read the complete documentation at docs.syncs.tv.
Download the native client from the client downloads guide or SyncTV App releases. Store builds are distributed through the supported app stores.
License
MIT. See LICENSE.