Music home
Releases, recommendations, and library shortcuts on one page.
Case study · 07 / 08
One media experience from discovery to HiFi playback.

A web and mobile music and video streaming platform with a personal library, synchronized lyrics, playlists, content operations, and a media-processing pipeline.
Key achievement
Built a music and video streaming platform for web and mobile, from the player to the media-processing pipeline.

01 · Context
Primary users
The problem
Listening experiences are easily fragmented across discovery, playback, lyrics, playlists, and media-file operations.
The approach
SoundNusantara combines discovery, a media player, synchronized lyrics, user preferences, and an admin dashboard with an FFmpeg processing pipeline.
Key numbers
02 · My role
Full-stack Engineer · Product UI · Media Pipeline
Technology used
Built an audio and video player with a queue, Picture-in-Picture, and quality options.
Synced LRC lyrics with the playback position.
Set up an FFmpeg pipeline on a background queue to produce several quality versions.
Built the React web app, Flutter app, and admin dashboard on the same media services.
03 · Highlights
Click an image to view it larger.
Swipe through them all, tap an image to enlarge it.
01 / 04
Releases, recommendations, and library shortcuts on one page.
Cover, progress, queue controls, and lyrics access on one Flutter screen.
LRC lyrics managed alongside content and mapped to playback time.
FFmpeg job statuses and failures are tracked from the admin dashboard.
04 · Challenges & decisions
01 / 02
05 · Outcome
One product foundation serves web, mobile, and content operations without separating the media lifecycle from the listener experience.
User flow
Architecture
Experience
React web · Flutter mobile · responsive media player
Media API
Laravel 12 · Sanctum · catalog · playlists · playback history
Processing
FFmpeg · queue workers · quality variants · metadata
Storage
MySQL · media files · thumbnails · lyric artifacts
Data model
User
role
preferences
quality
Content
type
artist
duration
status
Playlist
user_id
name
visibility
Playlist Item
playlist_id
content_id
position
Favorite
user_id
content_id
created_at
Playback History
user_id
content_id
progress
Processing Job
content_id
preset
status
