Melody
Full-stack Spotify-inspired app focused on playback UX and playlist flows.
Project overview
Melody is a full-stack clone of Spotify that delivers a seamless music streaming experience. Users can create accounts, build personalized playlists, browse albums, play songs, and enjoy continuous playback with a feature-rich audio player and advanced queue management.
Engineering challenges
-
Coordinating HTML5 audio with Redux play state, resetting readiness when
currentSongUrlchanges and only callingplay()once the new source is loaded, so rapid skip/prev actions do not hit stale<audio>buffers. -
Centralizing queue navigation in
playbarReducer(PLAY_QUEUE,PLAY_PREV/PLAY_NEXTwith modulo index math) so the global playbar and album/playlist views share one queue instead of duplicating skip logic per screen. -
Shaping playlist APIs with reusable Jbuilder partials that return explicit
playlist_songjoin IDs—letting the client add, reorder, or remove tracks without refetching full album catalogs after every mutation.
Features
- User authentication with secure session management
- Continuous audio playback with queue management
- Custom playbar with seamless song control (play, pause, rewind, skip, volume adjustment)
- Logged-in users can create, edit, and manage personal playlists
- Advanced search functionality to explore and discover albums
Architecture
flowchart TB
subgraph fe [1. Frontend — React + Redux]
react[React UI — albums, playlists, playbar]
redux[Redux — playbarReducer]
audio[HTML5 audio player]
react --> redux --> audio
end
subgraph be [2. Backend — Ruby on Rails]
auth[Auth — BCrypt passwords + sessions]
api[Jbuilder JSON API — playlists and songs]
orm[ActiveRecord]
auth --> api --> orm
end
subgraph data [3. Data and files]
pg[(PostgreSQL — users, playlists, song metadata)]
s3[AWS S3 — MP3 files and cover images]
end
react -->|Login, signup, logout| auth
redux -->|Fetch playlists, albums, playback URLs| api
orm --> pg
api --> s3
The React app and Rails API are deployed on Render; the browser talks to Rails over HTTPS, and Rails reads/writes PostgreSQL and S3.
Technologies used
Frontend
React, Redux, CSS
Backend
Ruby on Rails, ActiveRecord (ORM), Jbuilder (JSON formatter)
Data
PostgreSQL
Infra
Render
Asset Storage
AWS S3