Skip to content

ShirshenduR/Streamify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎧 Streamify

Streamify is a modern, open-source music streaming platform that lets you search, play, like, and download music for free — ad-free. Built using React + Vite for the frontend and Django REST for the backend, it features a sleek dark UI, Google login, per-user liked songs, and playlist management. All music data is fetched via the unofficial JioSaavn API by @sumitkolhe, and YouTube Music via ytmusicapi and yt-dlp.

This project is for educational purposes only and does not store or redistribute music files.


✨ Features

  • 🔐 Google login (via Firebase)
  • 🔍 Search for songs, albums, artists (JioSaavn API & YouTube Music)
  • ▶️ Stream music with a modern, mobile-friendly player (NowPlaying & MiniPlayer overlays)
  • ❤️ Like/unlike songs (per user, synced with backend)
  • 📂 Create & manage custom playlists
  • ⬇️ Download tracks with 1-click
  • 🌓 Dark themed, Figma-inspired UI
  • 📱 Fully responsive frontend (mobile-first)
  • 🏷️ Library page with liked songs and playlists (Playlist logic not implemented to implement in future)
  • 🔄 Real-time like/unlike sync across UI
  • 🌎 International music support via YouTube Music (ytmusic api and yt-dlp dont work on hosted use locally)

🧑‍💻 Tech Stack

Layer Stack
Frontend React, Vite, Plain CSS
Backend Django, Django REST Framework
Auth Firebase Authentication (Google login)
Music API Unofficial JioSaavn API, ytmusicapi, yt-dlp

📁 Project Structure

Streamify/
├── backend/                  # Django backend
│   ├── music/                # Django app (API views, models, urls)
│   ├── streamify_api/        # Django project settings
│   ├── manage.py
│   └── requirements.txt      # Python dependencies
├── frontend/                 # React + Vite frontend
│   ├── public/
│   ├── src/
│   │   ├── components/       # UI components (Miniplayer, Nowplaying, Navbar, etc.)
│   │   ├── hooks/          # React hooks (Player, Auth)
│   │   ├── pages/            # App pages (Home, Login, Library)
│   │   ├── utils/            # API, firebaseConfig
│   │   └── App.jsx
│   ├── package.json
│   └── vite.config.js
├── README.md
└── LICENSE

🚀 Getting Started

🔧 Frontend Setup (React + Vite)

Create a .env file inside frontend/ with your Firebase config:

VITE_FIREBASE_API_KEY=your_api_key_here
VITE_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_BACKEND_API_URL=http://localhost:8000
cd frontend
npm install
npm run dev

⚙️ Backend Setup (Django + Django REST)

cd backend
python -m venv venv
source venv/bin/activate  # or venv\Scripts\activate on Windows
pip install -r requirements.txt
python manage.py makemigrations
python manage.py migrate
python manage.py runserver

Create a .env in backend/ to store environment variables like:

DEBUG=True
SECRET_KEY=your-secret

🔌 JioSaavn API Setup

You are using the hosted API, so no need to self-host. Endpoints used:

GET https://saavn.sumit.co/api/search/songs?query=kesariya
GET https://saavn.sumit.co/api/songs?ids=SONG_ID

🧠 Backend API Overview

Endpoint Method Description
/api/search/ GET Search for songs
/api/song/ GET Get stream URL + details
/api/download/ GET Download link to song
/api/like/ POST Like or unlike a song
/api/unlike/ POST Remove song from liked
/api/liked/ GET Get user's liked songs
/api/playlists/ GET/POST Get or create playlists
/api/playlists/<id>/ PATCH Update playlist name

📦 Firebase Setup (Google Login)

  1. Go to Firebase Console
  2. Create a project and enable Google login
  3. Store credentials in .env files in frontend as shown above

🛑 Disclaimer

This project is intended only for learning and demonstration. No music is stored or redistributed by Streamify. API used is unofficial.


🙌 Credits


📜 License

MIT License


Built with ❤️ by Shirshendu for fun, learning & passion for music.

About

Streamify is a modern, open-source music streaming platform that lets you search, play, like, and download music for free. (Made for educational and learning purpose)

Resources

License

Code of conduct

Stars

6 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors