A React Native web music player inspired by Spotify's web UI. Powered by YouTube Music via yt-dlp + youtubei.js.
- Home Feed – Browse recommended songs, albums, playlists, and artists
- Search – Find songs, albums, artists, and playlists with suggestions
- Library – Your playlists, favorites, and listening history
- Full Player – Now-playing screen with album art, controls, and progress bar
- Mini Player – Persistent Spotify-style bottom bar while browsing
- Playlist Management – Create and manage custom playlists
- Local Storage – Favorites and history saved locally
- Spotify-inspired Design – Green accent (#1DB954), dark theme, clean typography
- Expo + React Native Web
- React Navigation – Bottom tabs + stack navigation
- Zustand – State management
- AsyncStorage – Local persistence
- YouTube.js – YouTube Music API
- yt-dlp – Audio URL extraction
- TypeScript – Type safety
npm install
cd server && npm install && cd ..pip install yt-dlpcd server && node index.jsThe server starts on port 3001. Initial startup takes ~15s to create a YouTube session.
npm run webnpm run build:web- Copy
dist/to your server's public directory - Run the API server on a Node.js process (ensure yt-dlp is installed)
- Set
EXPO_PUBLIC_API_URLto your API server URL
The repo includes a GitHub Actions workflow (.github/workflows/deploy.yml) that auto-builds and deploys to GitHub Pages on push to main.
| Home | Search | Library |
|---|---|---|
![]() |
![]() |
![]() |
src/
├── components/ # Reusable UI components
├── navigation/ # React Navigation setup
├── screens/ # App screens
├── services/ # API, audio player, storage
├── store/ # Zustand state stores
├── theme/ # Colors, spacing, typography
└── types/ # TypeScript type definitions
server/
└── index.js # YouTube Music API proxy
Inspired by SimpMusic and Spotify Web.
MIT


