Synchronized viewing, theater, live streaming, video, long-distance relationship
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.
 
 
Go to file
zijiren bd9bf2bcee
build: expose generic cargo build arguments (#43)
* build: expose generic cargo build arguments

* fix: satisfy clippy after build argument cleanup

* ci: run clippy independently and remove feature checks

* ci: avoid duplicate push checks for pull requests

* ci: deduplicate branch push and pull request runs

* ci: isolate push and pull request concurrency groups
2 months ago
.cargo chore 2 months ago
.config refactor: infra 5 months ago
.github build: expose generic cargo build arguments (#43) 2 months ago
.sqlx feat: minimize OAuth identity data (#39) 2 months ago
docs refactor(oauth): manage callback redirects at runtime (#41) 2 months ago
helm/synctv refactor(oauth): manage callback redirects at runtime (#41) 2 months ago
migrations feat: minimize OAuth identity data (#39) 2 months ago
scripts refactor(oauth): manage callback redirects at runtime (#41) 2 months ago
synctv refactor(oauth): manage callback redirects at runtime (#41) 2 months ago
synctv-adapter feat 2 months ago
synctv-api fix: harden asynchronous delivery and secret isolation 2 months ago
synctv-api-common refactor(oauth): manage callback redirects at runtime (#41) 2 months ago
synctv-api-grpc fix: harden asynchronous delivery and secret isolation 2 months ago
synctv-api-http build: expose generic cargo build arguments (#43) 2 months ago
synctv-cluster chore 2 months ago
synctv-common chore 2 months ago
synctv-core build: expose generic cargo build arguments (#43) 2 months ago
synctv-livestream chore 2 months ago
synctv-management feat: concurrent 2 months ago
synctv-media-providers feat: concurrent 2 months ago
synctv-proto refactor(oauth): manage callback redirects at runtime (#41) 2 months ago
synctv-proto-build feat: redesign room discovery and access 2 months ago
synctv-proto-main chore 2 months ago
synctv-proto-playback-provider feat(auth): add passkeys and TOTP authentication 2 months ago
synctv-proto-providers chore 2 months ago
synctv-proxy feat: expand playback navigation and media delivery 2 months ago
synctv-realtime feat: expand playback navigation and media delivery 2 months ago
synctv-xiu feat: concurrent 2 months ago
.dockerignore chore 2 months ago
.env.postgres.example feat: refresh project onboarding and presentation 2 months ago
.env.redis.example feat: refresh project onboarding and presentation 2 months ago
.env.synctv.example fix: harden asynchronous delivery and secret isolation 2 months ago
.gitignore chore 2 months ago
CONTRIBUTING.md feat: expand playback navigation and media delivery 2 months ago
Cargo.lock refactor(oauth): manage callback redirects at runtime (#41) 2 months ago
Cargo.toml refactor(oauth): manage callback redirects at runtime (#41) 2 months ago
Dockerfile build: expose generic cargo build arguments (#43) 2 months ago
LICENSE fix: ci lint 5 months ago
Makefile fix: harden asynchronous delivery and secret isolation 2 months ago
README.md feat: refresh project onboarding and presentation 2 months ago
README.zh-CN.md feat: refresh project onboarding and presentation 2 months ago
SECURITY.md fix: ci lint 5 months ago
deny.toml fic: ci 3 months ago
docker-compose.dev.yml feat: bump makefile 3 months ago
docker-compose.yml refactor(oauth): manage callback redirects at runtime (#41) 2 months ago
rust-toolchain.toml feat: expand media providers and playback lifecycle 2 months ago
synctv.example.yaml refactor(oauth): manage callback redirects at runtime (#41) 2 months ago

README.md

SyncTV

SyncTV

简体中文 · Website

Rust Tokio Axum gRPC PostgreSQL Redis Docker Helm Kubernetes OpenAPI Astro Starlight License

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.

SyncTV synchronized room playback

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.
  • 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.

SyncTV contributors

Quick Start

Development environment from a full repository checkout:

# Starts PostgreSQL and Redis, then runs SyncTV locally with development settings.
make dev-serve

# Starts SyncTV in the background with the same development settings.
make dev-start
make dev-stop

# Starts optional media/auth/storage dependencies too.
make dev-stack

# Runs real CLI/curl provider smoke tests through the Makefile dev startup path.
make dev-smoke

Production Compose uses generated PostgreSQL, Redis, and application secrets:

# Requires Docker Compose and openssl.
make compose-init

# Edit SYNCTV_BOOTSTRAP_ROOT_PASSWORD in .env.synctv before starting.
make compose-up

Validate configuration:

cargo +nightly run -p synctv --bin synctv -- config validate

Optional migration preflight. The server also runs embedded SQLx migrations automatically during startup:

cargo +nightly run -p synctv --bin synctv -- db migrate

Start locally:

cargo +nightly run -p synctv --bin synctv -- serve

Documentation

Read the complete documentation at docs.syncs.tv.

Download the native client from SyncTV App releases, or install it through the supported app stores.

License

MIT. See LICENSE.