EchoNode is a modern, aesthetically‑styled web app that streams music from YouTube directly to your browser using the powerful yt‑dlp and mpv tools. The UI features a dark, futuristic vibe with animated “orbs”, a visualizer, and a quick‑tags bar for instant playback of popular songs.
“Stream your universe, effortlessly.” – the EchoNode tagline.
- One‑click song playback – type any song name, artist, or vibe and EchoNode streams the best YouTube match.
- Popular presets – predefined buttons for quick access to trending tracks.
- Dynamic visualizer – animated bars that react to the loading state.
- Animated background orbs for a spatial‑audio feel.
- Responsive design – works on desktop and mobile browsers.
- Server‑side API –
/api/playaccepts a POST request with{ "title": "song name" }and streams the audio viayt‑dlp→mpv.
| Component | Version |
|---|---|
| Next.js | 16.1.1 |
| React | 19.2.3 |
| TypeScript | ^5 |
| TailwindCSS | ^4 |
| yt‑dlp | latest (install via pip) |
| mpv | latest (system package) |
- Node.js (v20 or later) – download
- pnpm / npm – the repo uses npm scripts.
- yt‑dlp – install with
pip install -U yt-dlpor your package manager. - mpv – a media player that can read from stdin.
# Ubuntu/Debian sudo apt-get install mpv # macOS (brew) brew install mpv
# Clone the repo
git clone https://github.com/<YOUR_USERNAME>/echonode.git
cd echonode
# Install Node dependencies
npm installnpm run devOpen http://localhost:3000 in your browser. The app will hot‑reload as you edit files.
npm run build # Generates an optimized production build
npm start # Starts the production serverPOST /api/play
- Request Body (JSON)
{ "title": "song name or artist" } - Responses
200 OK–{ "message": "Playing: <title>" }400 Bad Request–{ "error": "Song title is required" }500 Internal Server Error–{ "error": "Failed to Play" }
The endpoint spawns yt‑dlp to fetch the best audio stream from YouTube and pipes it directly to mpv for playback.
- Tailwind Config – edit
tailwind.config.jsto adjust colours, fonts, or breakpoints. - UI Themes – the root layout imports Google fonts
GeistandGeist_Mono. Swap them out inapp/layout.tsxif you prefer a different typeface. - Orbs & Visualizer – the animation parameters live in
app/page.tsxunder theuseEffecthooks – feel free to tweak size, speed, or colours.
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a feature branch (
git checkout -b feat/your-feature). - Install dependencies and make your changes.
- Run lint and type‑check:
npm run lint npx tsc --noEmit
- Open a pull request with a clear description of what you changed.
This project is licensed under the MIT License – see the LICENSE file for details.
Twitter/X : @itsCzar16