Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

freeman-jiang/beatsync

Repository files navigation

Beatsync

Beatsync is a high-precision web audio player built for multi-device playback. The official app is beatsync.gg.

beatsync-demo.mov

Features

  • Millisecond-accurate synchronization: Abstracts NTP-inspired time synchronization primitives to achieve a high degree of accuracy
  • Cross-platform: Works on any device with a modern browser (Chrome recommended for best performance)
  • Spatial audio: Allows controlling device volumes through a virtual listening source for interesting sonic effects
  • Polished interface: Smooth loading states, status indicators, and all UI elements come built-in
  • Self-hostable: Run your own instance with a few commands

Note

Beatsync is in early development. Mobile support is working, but experimental. Please consider creating an issue or contributing with a PR if you run into problems!

Quickstart

This project uses Turborepo.

Fill in the .env file in apps/client with the following:

NEXT_PUBLIC_API_URL=http://localhost:8080
NEXT_PUBLIC_WS_URL=ws://localhost:8080/ws

Run the following commands to start the server and client:

bun install # installs once for all workspaces
bun dev # starts both client (:3000) and server (:8080)
Directory Purpose
apps/server Bun HTTP + WebSocket server
apps/client Next.js frontend with Tailwind & Shadcn/ui
packages/shared Type-safe schemas and functions shared between client & server

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /