A full-stack music streaming Progressive Web App (PWA) built with Next.js 16, React 19, and TypeScript.
Stream music, discover new tracks, manage playlists, and listen together with friends — all without creating an account.
| Category | Feature |
|---|---|
| 🎵 Playback | YouTube-powered audio playback with crossfade, stop-at-time, and Media Session API (lock-screen controls) |
| 🔍 Discovery | Search songs, albums, and artists; trending charts; mood-based playlists; Apple Music & Last.fm charts |
| 🤖 AI Personalisation | On-device taste profile — raw data never leaves your device; AI-ranked search and recommendations |
| 📃 Lyrics | Timestamped karaoke-style lyrics with transliteration and translation via Groq LLM |
| 📂 Library | Liked songs, user-created playlists, play history, listening stats, and badges |
| ⬇️ Downloads | Download songs for offline playback via a self-hosted or built-in proxy server |
| 🎉 Party Mode | Real-time collaborative listening with WebRTC, vote-sorted queue, emoji reactions, and group chat |
| 🎙️ Podcasts | Browse and play podcast episodes |
| ⏭️ SponsorBlock | Automatically skip sponsor segments in tracks |
| 🌐 Community | Community-driven trending via the optional ToPlay integration |
| 🌙 Theming | Dark / light mode with full Tailwind CSS v4 customisation |
| 📱 PWA | Installable on desktop and mobile; offline banner for network-loss detection |
- Framework: Next.js 16 (App Router)
- UI: React 19 + Radix UI + shadcn/ui + Tailwind CSS v4
- Language: TypeScript 5 (strict mode)
- State: React Context API + localStorage (no Redux)
- Package manager: pnpm
- Access the hosted version on https://musicanaz.vercel.app/
- You can use any browser to access
Musicanaz
- Node.js ≥ 18
- pnpm (
npm install -g pnpm)
git clone https://github.com/Wilooper/Musicanaz.git
cd Musicanazpnpm installcp .env.example .env.localOpen .env.local and fill in the required values. See .env.example for descriptions of each variable.
pnpm devOpen http://localhost:3000 in your browser.
pnpm build
pnpm startSee Project_structure.md for the full annotated directory tree.
A lightweight yt-dlp download server is included at the repo root:
# Node.js version
node download_server.js
# Python version
python download_server.pySet NEXT_PUBLIC_YT_DL_SERVER in your .env.local to the server's URL to enable it.
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a branch for your feature or fix:
git checkout -b feature/your-feature-name
- Make your changes and ensure existing behaviour is not broken.
- Commit with a clear message:
git commit -m "feat: describe your change" - Push your branch and open a Pull Request against
main.
For AI-assisted contributions, refer to README_FOR_AI.md for architecture details and coding conventions.
This project is licensed under the MIT License. See LICENSE for details.
For any inquiries, please contact the project maintainer at [thinkelyorg@gmail.com].