π΅ Millions of songs β’ π« Zero ads β’ π₯ Offline ⒠𧬠Music DNA
π₯ Open Source β’ Free Forever β’ Built for Android
Null is a free, open-source music streaming player built for Android. Access millions of songs through a reliable, multi-source backend with intelligent fallback routing. No subscriptions, no ads, no trackingβjust music.
Built with React + Vite on the front-end, Node.js + Express on the back-end, and Capacitor for native Android integration. Everything is designed to work offline, resume seamlessly, and handle network failures gracefully.
π Visit Website β’ π₯ Download APK
β¨ No Ads, No Subscriptions
Stream unlimited music without paying. Ever.
π Your Privacy Matters
Open-source code. Zero tracking. No data harvesting.
π± Works Offline
Download tracks and listen anywhere, even without internet.
π Fast & Reliable
Intelligent fallback routing ensures playback never stops.
π― Music Discovery
Personalized recommendations and Music DNA profiling.
π» Built by the Community
Open-source on GitHub. Contribute and help shape the future.
Most music apps today:
- Interrupt your experience with ads
- Lock features behind subscriptions
- Track your behavior
Null was built to change that.
π A music player that is free, open, and respects users
- π« No ads β ever
- β‘ Fast and lightweight
- π₯ Works offline
- 𧬠Unique Music DNA feature
- π Fully open source
π Built for users, not profit
Core Experience: Home, Search & Discovery, Queue Management
| Home Screen | Search Interface | Queue Controls |
|---|---|---|
![]() |
![]() |
![]() |
Library & Playback: Personal Library, Full Playback Controls, Advanced Features
| Library View | Playback Screen | Feature Highlights |
|---|---|---|
![]() |
![]() |
![]() |
Music DNA: Personalized Profiles & Insights
| DNA Profile Overview | DNA Traits & Analysis | Animated DNA Helix |
|---|---|---|
![]() |
![]() |
![]() |
- Search Everything: Find songs, artists, albums, and playlists instantly
- Smart Playback: Queue management with shuffle, repeat, and insert controls
- Resume State: Pick up exactly where you left off every time
- Offline Downloads: Save tracks to your device and listen without internet
- Multi-Source Fallback: Intelligent routing ensures songs play even if one source fails
- Android Media Controls: Full integration with system player controls and notifications
- Personal Favorites: Save love songs, artists, and playlists
- Smart Library: Recently Played, Most Played, and personalized Made For You sections
- Playlist Management: Create, edit, and organize custom collections
- Search Filters: Find exactly what you want with advanced filtering
- Sync Across Devices: Your library follows you everywhere
- Integrated Lyrics: View lyrics while you listen
- Equalizer Hooks: Audio tuning controls for custom sound
- Data Saver Mode: Optimize streaming for limited connections
- Auto-Radio: Continuous playback with related track suggestions
- Theme Switching: Light and dark modes for day and night
- Mobile-First Design: Optimized layout for all screen sizes
- Email/Phone Signup: Quick registration with OTP verification
- Secure Login: JWT-based sessions with refresh tokens
- Device Sync: Favorites and playlists sync automatically
- Privacy First: Request deletion and data download anytime
- Feedback & Support: Built-in issue reporting and help channels
Null analyzes your listening history to create a personalized Music DNA profile:
- DNA Traits: Your unique energy, valence, acousticness, and danceability signature
- Genre Matrix: Visual breakdown of your favorite genres and decades
- Sonic Twins: AI-matched recommendations based on your listening patterns
- Shareable Profile: Export and share your DNA card on social media
- Animated Helix: Beautiful visualization of your music identity
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | React 18 + Vite | Fast, modular UI |
| Mobile Shell | Capacitor 6 | Native Android integration |
| Backend API | Node.js 22 + Express | Scalable server |
| Database | PostgreSQL | Persistent data storage |
| Stream Resolution | yt-dlp (with fallbacks) | Multi-source audio retrieval |
| Lyrics | LRCLIB API | Synchronized lyrics |
| Authentication | JWT + OTP | Secure user sessions |
music-player/
βββ src/ # React frontend (components, hooks, styles)
βββ backend/ # Node.js server (API routes, auth, cache)
βββ android/ # Capacitor & Android native code
βββ tests/ # Unit and integration tests
βββ scripts/ # Build and migration utilities
βββ shared/ # Shared utilities and helpers
βββ website/ # Marketing website assets
βββ public/ # Static assets and service worker
Detailed architecture: See ARCHITECTURE.md
- Node.js 22+ (download)
- npm 10+ (included with Node.js)
- Java 21+ (JDK)
- Android SDK (for device builds; included with Android Studio)
# Clone the repository
git clone https://github.com/adit-ya15/music-player.git
cd music-player
# Install dependencies
npm install
# Start development server
npm run dev # Web UI on http://localhost:5173
npm run server # Backend on http://localhost:3000 (in another terminal)# Lint code for style issues
npm run lint
# Run test suite
npm test
# Build for production (web)
npm run buildnpm run build # Build web assets
npx cap sync android # Sync to Android project
cd android
./gradlew assembleDebug # Build debug APK
# Output: app/build/outputs/apk/debug/app-debug.apknpm run build
npx cap sync android
cd android
./gradlew assembleRelease # Requires keystore (see below)
# Output: app/build/outputs/apk/release/app-release.apkKeystore Setup: See RELEASE_AND_UPDATE_GUIDE.md for signing and release configuration.
| Document | Contents |
|---|---|
| ARCHITECTURE.md | System design, data flow, and component architecture |
| SECURITY.md | Security practices, rate limiting, and threat model |
| PRIVACY.md | Data handling, privacy policy, and user rights |
| CONTRIBUTING.md | How to contribute, coding standards, and pull request process |
| CODE_OF_CONDUCT.md | Community values and conduct guidelines |
| ROADMAP.md | Planned features, milestones, and community requests |
| CHANGELOG.md | Release notes and version history |
| RELEASE_AND_UPDATE_GUIDE.md | Build, sign, and publish process for new versions |
| OPEN_SOURCE_RELEASE_CHECKLIST.md | Pre-release QA and verification steps |
Create .env for local development:
DATABASE_URL=postgresql://user:pass@localhost:5432/null
JWT_SECRET=your-secret-key
PORT=3000Never commit .env files to Git. Use .env.example as a template.
Sensitive files to ignore:
.envand.env.*.localandroid/keystore.propertiesandroid/local.properties.DS_Store
Contributions are welcome! Whether it's code, bug reports, design feedback, or translationsβwe'd love your help.
To contribute:
- Fork the repository on GitHub
- Clone your fork locally
- Create a feature branch (
git checkout -b feature/your-feature) - Make your changes, following the style guide
- Test thoroughly (
npm test,npm run lint) - Commit with clear messages
- Push to your fork
- Open a Pull Request with detailed description
See CONTRIBUTING.md for detailed guidelines, architecture decisions, and code standards.
- π Documentation: Check ARCHITECTURE.md and SECURITY.md
- π Report Bugs: Open an issue on GitHub with reproduction steps
- π¬ Discuss Features: Start a discussion for ideas and feedback
- β€οΈ Community: See CODE_OF_CONDUCT.md
Null is free and always will be. If you love the app and want to support development:
- UPI (India):
aditya262701@okicici - Support Page: null-music.netlify.app/#support
- Star the Repository: Give us a β on GitHub
Every contributionβfinancial or otherwiseβhelps us keep the music player free and ad-free for everyone.
Null is released under the MIT License. See LICENSE for the full text.
- Copyright: Aditya
- License: MIT
- Open Source: Yes, forever
Q: Is Null really free?
A: Yes. Forever. No ads, no paywalls, no surprises.
Q: How is Null free without ads?
A: It's open-source software maintained by volunteers and supported by optional sponsorships.
Q: Does Null track me?
A: No. All code is open-source and auditable. Check PRIVACY.md.
Q: Will Null work offline?
A: Yes. Download tracks in advance, and they'll play without internet.
Q: How can I contribute?
A: Code, bug reports, translations, and design feedback are all welcome. See CONTRIBUTING.md.
Q: Can I build Null myself?
A: Absolutely. Clone the repo and follow the Getting Started guide.
- Built by: Aditya
- Community: All contributors who've helped shape Null
- Technologies: React, Node.js, Capacitor, yt-dlp, LRCLIB, and more
- Inspired by: Open-source community values and user privacy advocacy
If you believe in:
- Free software
- No ads
- Open source
π Give this repo a β β it helps more than anything
π Share it with friends β help it grow π
Made with β€οΈ for music lovers. Open-source. Ad-free. Forever.








