Klasika
Back to Portfolio
Music Streaming Platform2020 – 2021Software Engineer & Creative Technologist

Klasika

A curated classical music streaming app built for Massive Music Entertainment.

ReactNode.jsMongoDBWeb Audio APISocket.IO
Overview

About This Project

Klasika is a curated classical music streaming platform created for Massive Music Entertainment — a Jakarta-based entertainment company with a catalogue of orchestral recordings, chamber music, and exclusive live concert recordings. Unlike mainstream streaming platforms, Klasika was designed for a discerning audience of classical music enthusiasts who needed liner notes, movement navigation, and conductor/soloist metadata alongside their listening experience.

I joined as the sole frontend engineer, with one backend engineer and a UX designer. The project went from concept to production in 8 months.

Challenge

The Problem

Classical music has very different listening patterns compared to pop music:

- Long-form content: A symphony can run 60–90 minutes across 4 movements. Users need to navigate within a single track, not just between tracks. - Rich metadata: Listeners care about the conductor, soloists, orchestra, recording date, and venue — metadata that standard streaming APIs don't support. - Audio quality: Classical enthusiasts are sensitive to compression artifacts. We needed lossless audio support (FLAC/ALAC) while managing bandwidth efficiently. - Catalog discovery: The classical catalogue is organized by composer, era, instrument, and form — completely different from the genre/artist/album model of mainstream platforms.

Additionally, our budget was limited. We needed to build a production-quality streaming service without a large engineering team.

Solution

How We Solved It

I designed a component architecture that separated concerns cleanly:

Movement-aware Player: Extended the standard HTML5 audio API with a custom timeline overlay that maps movements to timestamps. Users can jump to a specific movement mid-track, with the progress bar segmented to show movement boundaries.

Rich Metadata Engine: Built a flexible metadata schema in MongoDB that supports nested performer credits, recording provenance, and editorial notes. The frontend renders this as collapsible 'liner notes' panels alongside the player.

Adaptive Streaming: Implemented HLS (HTTP Live Streaming) with quality ladders — the server serves 128kbps AAC for mobile/slow connections and 320kbps AAC or FLAC for desktop/fast connections. Users can override quality manually.

Faceted Discovery: A multi-dimensional search and filter system allowing users to browse by composer → work → recording, or by era, instrument, mood, and duration.

Features

Key Capabilities

🎵

Movement Navigator

Jump to specific movements within a long-form work. Progress bar is segmented with movement markers and labels.

📖

Liner Notes Panel

Rich metadata display with performer credits, recording details, program notes, and composer biography.

🎧

Adaptive Audio Quality

Automatic quality selection based on connection speed, with manual override for audiophiles. Supports up to FLAC lossless.

🔎

Faceted Discovery

Explore by composer, era, instrument, mood, duration, or ensemble type — built for classical music's unique taxonomy.

📥

Offline Listening

Download albums and playlists for offline use. Encrypted local storage with license-aware DRM for protected recordings.

🎭

Live Concert Streams

Real-time streaming of live concerts with low-latency Socket.IO sync for synchronized listening rooms.

Technical

Under the Hood

Frontend

React with custom Web Audio API hooks for fine-grained audio control. The player component was built from scratch — not using any existing audio player library — to support movement navigation and the custom timeline overlay.

Backend

Node.js with Express. MongoDB for flexible catalogue metadata. Audio files stored on object storage (S3-compatible) with CDN distribution. FFmpeg used server-side for transcoding uploads to multiple quality tiers.

Real-time

Socket.IO for synchronized listening rooms — a feature that allowed users to listen together in real-time with a shared playback state. Useful for online listening groups and virtual concert events.

Results

Impact & Outcomes

Launched to 5,000 beta users in the first month

Average session length of 47 minutes — significantly above industry average of ~20 minutes

Liner notes panel opened in 68% of listening sessions

FLAC quality selected by 34% of desktop users despite being the highest bandwidth option

Platform awarded 'Best Music App' at a regional digital media awards ceremony

Reflection

What I Learned

Building Klasika taught me that domain knowledge is as important as technical skill. I spent the first two weeks just listening to classical music, reading liner notes, and interviewing potential users. That research directly shaped every product decision. The movement navigator — the feature users loved most — came directly from a conversation with a cellist who told me she always needed to skip the slow movements.

Other Projects