Skip to content

priyanshuwq/AUDORA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

333 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AUDORA

Audora is a music streaming platform designed for real-time collaborative listening. It leverages WebRTC for low-latency audio streaming and Socket.io for precise state synchronization, enabling users to host jam sessions where friends can join instantly via a simple 4-digit room code to share queues and enjoy synchronized playback.

Showcase

screenshot-2025-11-15_15-05-27
Audora.jam.mp4

Showcasing oneko.js

Oneko-Showcase.mp4

Core features

  • Real-time jam sessions (WebRTC audio + Socket.io signaling)
  • Shared queue and host-controlled playback
  • Import local MP3s into the library (backend import scripts)
  • React + Vite frontend with Zustand stores and Tailwind UI

Architecture

  • Media files (songs, cover art) are hosted separately on GitHub Pages for reduced repository size
  • Media URL resolution handled via frontend/src/lib/mediaUrl.ts
  • Production media served from: https://priyanshuwq.github.io/audora-media

Quick start (dev) Prereqs: Node 18+, npm, MongoDB.

Run backend and frontend in separate shells (fish examples):

# Backend
cd backend
npm install
npm run dev

# Frontend
cd frontend
npm install
npm run dev

Import local songs (optional):

# Put MP3s in frontend/public/songs
cd backend
npm run extract:metadata
npm run import:songs

Environment (important)

  • backend/.env: MONGODB_URI, PORT (8000), FRONTEND_ORIGINS, ADMIN_EMAILS, CLERK keys
  • frontend/.env: VITE_CLERK_PUBLISHABLE_KEY, VITE_MEDIA_BASE_URL

Media Configuration

  • For local development: Leave VITE_MEDIA_BASE_URL empty (uses local files from public folder)
  • For production: Set VITE_MEDIA_BASE_URL=https://priyanshuwq.github.io/audora-media
  • Media files should be placed in frontend/public/songs/ and frontend/public/extracted-covers/ for local development
  • These folders are gitignored to keep the main repository lightweight

Notes: the script is served statically from the frontend public folder. Drop your customized oneko.js into frontend/public/ and assets into frontend/public/oneko/.

Where to look in the repo

  • Backend boot & routes: backend/src/index.js, backend/src/routes/, backend/src/controller/
  • Socket handlers: backend/src/lib/socket.js, backend/src/socket/roomHandlers.js, backend/src/socket/jamSessionHandlers.js
  • Frontend stores & sync: frontend/src/stores/useEnhancedRoomStore.ts, frontend/src/stores/usePlayerStore.ts
  • Audio & sync helpers: frontend/src/lib/webrtcAudioStream.ts, frontend/src/lib/jamSyncUtils.ts
  • Media URL utility: frontend/src/lib/mediaUrl.ts
  • Shared player hooks: frontend/src/hooks/useDominantColor.ts, frontend/src/hooks/useAudioProgress.ts, frontend/src/hooks/useVolumeControl.ts

Contributing & license

  • Fork, branch, test, PR. See LICENSE for terms.


If you found this useful, consider giving it a ⭐

Made with ❤️ Priyanshu

About

Audora is a music streaming platform designed for real-time collaborative listening, enabling users to host jam sessions where friends can join instantly via a simple 4-digit room code to share queues and enjoy synchronized playback.

Topics

Resources

License

Stars

3 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors