Uday Sheth Uday Sheth Logo
Full-Stack Web App ยท Open Source

Indie Vibes

A full-stack music streaming application built around user accounts, music discovery, playlists, and persistent playback.

PHP MySQL JavaScript Bootstrap

Overview

Indie Vibes is a full-stack music streaming web application where users can create accounts, discover artists, listen to individual tracks, generate random playlists, and manage their playback experience from a persistent player.

I built the project as an exploration of what happens when a traditional PHP/MySQL application needs to maintain a more interactive client-side experience instead of behaving like a collection of simple CRUD pages.

The idea

Music applications combine several different pieces of functionality that need to work together: user accounts, content stored in a database, playlists, playback controls, and a responsive interface.

Indie Vibes gave me a way to bring those pieces together into one application while keeping the underlying implementation relatively straightforward and easy to understand.

Core features

  • User registration and accounts.
  • Artist and track browsing.
  • Individual song playback.
  • Random playlist generation.
  • Persistent playback controls.
  • Track downloads.
  • User feedback.

The playback experience

One of the more interesting parts of the project was moving beyond simple page-based interaction.

The persistent player allows playback controls to remain available while users navigate through the application. Playback state, selected tracks, and playlist behaviour therefore need to remain consistent with the rest of the interface.

This made the frontend considerably more stateful than a typical PHP CRUD application and required the client-side JavaScript to work closely with the application's data.

How it's built

The frontend uses HTML, CSS, and JavaScript without a frontend framework. Keeping the interface framework-free made the playback logic and application behaviour more explicit and easier to experiment with.

The backend is built with PHP, with MySQL providing persistent storage for application data such as users, artists, tracks, and playlists.

Bootstrap is used for responsive layout and common interface components while the application's core behaviour remains custom-built.

Data and application structure

The application relies on relationships between users, artists, tracks, and playlists rather than treating each feature as an isolated page.

This made database design an important part of the project. User-specific functionality needs to remain associated with the correct account while music content can be shared across the application.

Why I built it

Indie Vibes started as a way to practice building a complete application rather than another isolated feature or CRUD interface.

I wanted to work with the combination of authentication, relational data, user-specific state, playlists, and a JavaScript-driven playback experience in one project.

It was also a useful exercise in understanding where the responsibilities of the backend end and where the frontend needs to take over to create a responsive user experience.

What I learned

The project gave me practical experience connecting a PHP backend and MySQL database to a stateful frontend experience.

More importantly, it showed me that a working full-stack application is about more than getting individual features working. Authentication, database relationships, playback, playlists, and interface state all have to cooperate without making the application feel fragmented.

Project

The complete source code and setup instructions are available on GitHub.