Groove Music is a high-performance, premium music streaming platform designed with a modern glassmorphic aesthetic. It bridges the gap between massive music metadata (iTunes) and high-quality audio streaming (YouTube), providing a seamless, ad-free listening experience.
- 🔍 Global Discovery: Search over 70 million songs via integration with the iTunes Music API.
- 🎧 Seamless Streaming: High-fidelity audio extraction and streaming directly from YouTube.
- 💎 Glassmorphic UI: A stunning, responsive interface with translucent elements, vibrant gradients, and smooth micro-animations.
- 🔐 Secure Authentication: Integrated Google OAuth 2.0 for quick and secure user onboarding.
- 📂 Personal Library: Create, rename, and manage custom playlists.
- ❤️ Liked Songs: Dedicated section for your favorite tracks with one-click favoriting.
- 📻 Artist Radio: Dynamically generate a radio station based on your favorite artist.
- 🎹 Smart Controls: Keyboard shortcuts (Space to Play/Pause, Ctrl+Arrows for Skip) and Hardware Media Key support.
- 📱 Responsive Design: Fully optimized for Desktop, Tablet, and Mobile devices with a dedicated mobile player view.
- Framework: React 18 with Vite for ultra-fast builds.
- Styling: Vanilla CSS with CSS Variables for theme management and Glassmorphism effects.
- Icons: Lucide React for crisp, consistent iconography.
- Auth:
@react-oauth/googlefor seamless social login.
- Runtime: Node.js & Express.
- Database: MongoDB with Mongoose for user data and playlist persistence.
- Audio Engine:
yt-dlp-wrapandyoutubei.jsfor robust YouTube interaction. - Security: JSON Web Tokens (JWT) for session management and
dotenvfor secret handling.
Groove-Music/
├── backend/ # Node.js Express Server
│ ├── src/
│ │ ├── config/ # DB connection & environment setup
│ │ ├── controllers/ # Request handling logic
│ │ ├── middleware/ # Auth & error handlers
│ │ ├── models/ # Mongoose Schemas (User, SystemConfig)
│ │ ├── routes/ # Modular API endpoints (Auth, Song, User)
│ │ ├── services/ # External API Clients (iTunes, YouTube, yt-dlp)
│ │ ├── app.js # App definition & middleware
│ │ └── server.js # Server entry point
│ ├── tests/ # System & unit tests
│ └── package.json
├── frontend/ # React Vite Application
│ ├── src/
│ │ ├── components/
│ │ │ ├── layout/ # Persistent UI (Sidebar, Player, TopBar)
│ │ │ └── shared/ # Reusable UI atoms
│ │ ├── context/ # Global state (Music, Toast)
│ │ ├── hooks/ # Custom business logic hooks
│ │ ├── pages/ # Full-page views (Home, Search, Playlists)
│ │ ├── services/ # API abstraction layer
│ │ └── styles/ # Global & component-specific CSS
│ └── package.json
└── README.md
- Node.js: v18.0.0 or higher
- MongoDB: Local instance or MongoDB Atlas URI
- Python: Required for
yt-dlpaudio extraction - FFmpeg: (Optional) For advanced audio processing
git clone https://github.com/kahan123/Groove-Music.git
cd Groove-Musiccd backend
npm installCreate a .env file in the backend/ directory:
PORT=3000
MONGO_URI=your_mongodb_uri
CLIENT_URL=http://localhost:5173
SERVER_URL=http://localhost:3000
COOKIE_KEY=any_random_string
GOOGLE_CLIENT_ID=your_google_client_id
ADMIN_SECRET=your_admin_passwordStart the backend:
npm run devcd ../frontend
npm installStart the frontend:
npm run devOpen http://localhost:5173 in your browser.
| Shortcut | Action |
|---|---|
Space |
Play / Pause |
Ctrl + → |
Next Track |
Ctrl + ← |
Previous Track |
M |
Mute / Unmute |
Groove Music uses a distributed audio processing pipeline:
- Metadata Phase: The client searches iTunes for high-quality metadata and album art.
- Search Phase: The backend uses
youtubei.jsto find the most relevant, high-quality audio match on YouTube. - Streaming Phase:
yt-dlpspawns a stream on the backend, which is piped directly to the frontendaudioelement usingaudio/mpegchunking, ensuring minimal latency and no local storage requirements.
- Desktop App: Electron wrapper for a native experience.
- Offline Mode: Local caching of favorite tracks.
- Lyrics: Real-time synchronized lyrics integration.
- Social: Shareable playlists and "Listening Now" status.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
Created with ❤️ by the Groove Music Team.