Skip to content

Repository files navigation

🌊 SoundWave - Full-Stack Music Web Application

Live Demo Python Django PostgreSQL Cloudinary License: MIT

SoundWave is a full-stack music streaming web application built with Django, PostgreSQL, and Cloudinary. It features dynamic audio playback, playlist management, interactive favorites, and a responsive user interface.

🔗 Live Application: https://musicclone-yzh4.onrender.com/


✨ Key Features

  • 🎧 Interactive Music Player:
    • Full playback controls: Play, Pause, Next, Previous, Repeat, and Shuffle.
    • Interactive track progress bar with scrub/seek and volume slider.
  • 🔍 Song Exploration & Discovery:
    • Browse tracks organized by genre, artist, and popularity.
    • Instant search filtering by song title, artist, or genre.
  • ❤️ Liked Songs & Favorites:
    • Authenticated users can like/unlike tracks with instant database persistence.
    • Dedicated personal "Liked Songs" library view.
  • 📁 Playlist Management:
    • Create, customize, and manage personal playlists.
    • Add or remove tracks effortlessly.
  • 🔐 User Authentication:
    • Secure registration, login, logout, and session handling.
  • ☁️ Cloud Media Storage:
    • High-performance album covers and playlist artwork hosted on Cloudinary CDN.
  • 🛡️ Django Admin Panel:
    • Built-in administrator dashboard for managing songs, artists, genres, playlists, and user accounts.
  • 🚀 Production-Ready Architecture:
    • Preconfigured with Gunicorn, WhiteNoise, PostgreSQL database connection pooling (dj-database-url), and deployment files (Procfile, build.sh).

🛠️ Tech Stack

Component Technology
Backend Python 3.11, Django 4.2 (MTV Monolithic Architecture)
Frontend HTML5, CSS3, JavaScript (Vanilla DOM & Web Audio API)
Database SQLite (Development) / PostgreSQL (Production)
Media CDN Cloudinary (django-cloudinary-storage)
WSGI Server Gunicorn
Static Files WhiteNoise
Deployment Render / Railway

📂 Project Structure

SoundWave/
├── Mymusic/                   # Django Project Core Configuration
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py            # Environment settings (DB, Cloudinary, Security)
│   ├── urls.py                # Root URL routing
│   └── wsgi.py                # WSGI entry point for Gunicorn
├── main/                      # Core Music Application
│   ├── migrations/            # Database schema migrations
│   ├── templates/main/        # Application HTML templates
│   ├── admin.py               # Django Admin registration
│   ├── apps.py                # App configuration
│   ├── context_processors.py  # Global context (e.g., user playlists)
│   ├── models.py              # Song, Playlist, and User models
│   ├── tests.py               # Unit tests
│   ├── urls.py                # Main app routes
│   └── views.py               # Views and request handling
├── templates/                 # Global error templates (404, 500)
│   ├── 404.html
│   └── 500.html
├── build.sh                   # Deployment build script
├── Procfile                   # Process file for cloud hosting
├── requirements.txt           # Project dependencies
├── data.json                  # Seed data (songs, playlists, demo data)
├── upload_media.py            # Cloudinary media synchronization script
└── manage.py                  # Django CLI utility

🚀 Getting Started (Local Development)

1. Prerequisites

  • Python 3.10 or 3.11 installed
  • Git installed

2. Clone the Repository

git clone https://github.com/TunganaVinodKumar/SoundWave.git
cd SoundWave

3. Create & Activate a Virtual Environment

# Windows
python -m venv venv
venv\Scripts\activate

# macOS / Linux
python3 -m venv venv
source venv/bin/activate

4. Install Dependencies

pip install -r requirements.txt

5. Configure Environment Variables

Create a .env file or export the following variables:

DJANGO_SECRET_KEY=your-secret-key-here
DJANGO_DEBUG=True
DJANGO_ALLOWED_HOSTS=127.0.0.1,localhost

# Cloudinary Credentials (Optional for local development)
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret

6. Run Migrations & Load Data

# Run database migrations
python manage.py migrate

# Load initial songs and playlists
python manage.py loaddata data.json

7. Run the Development Server

python manage.py runserver

Open http://127.0.0.1:8000/ in your browser to view the application.


🌐 Production Deployment (Render / Railway)

Environment Variables

Variable Description
DATABASE_URL PostgreSQL connection string
DJANGO_SECRET_KEY Secure secret key for Django
DJANGO_DEBUG Set to False in production
DJANGO_ALLOWED_HOSTS .onrender.com,.railway.app,localhost (or *)
CLOUDINARY_CLOUD_NAME Cloudinary account name
CLOUDINARY_API_KEY Cloudinary API key
CLOUDINARY_API_SECRET Cloudinary API secret
PYTHON_VERSION 3.11.9

Deployment Commands

  • Build Command:
    python manage.py collectstatic --no-input && python manage.py migrate && python manage.py loaddata data.json
  • Start Command:
    gunicorn Mymusic.wsgi:application --bind 0.0.0.0:$PORT

👤 Author

Tungana Vinod Kumar


📄 License

This project is licensed under the MIT License.

About

Full-stack music web application with playlist management, music playback, and a responsive user interface.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages