TBSystemTanmay
Bhuskute
Level 1 Case StudyAndroid / Dec 2021

SoundScape - Android Music Streaming App

I built an end-to-end Android music streaming app with API integration and intelligent caching that reduced API calls by 70%.

70% API call reductionFull music streaming feature set implemented

01

TL;DR

  • I built an end-to-end Android music streaming app with API integration and intelligent caching that reduced API calls by 70%.
  • Best published result: 70% API call reduction

02

Problem

  • Create a functional music streaming experience on Android Music listeners on Android devices. Demonstrates full-stack mobile development and real-world performance optimization.

03

My Role

  • personal build with end-to-end ownership
  • Problem framing: Create a functional music streaming experience on Android
  • Architecture: Android SDK with REST API integration
  • Implementation: Room database for caching, MediaPlayer for playback
  • Evaluation: 70% API call reduction; Full music streaming feature set implemented
  • Before: Demonstrates full-stack mobile development and real-world performance optimization
  • Personally designed: Implemented Room caching layer for Musixmatch API responses because Reduces API calls by 70% and improves user experience with instant data; Microservices architecture for playback/notifications because Separates concerns, makes each component independently testable
  • Others owned: No separate collaborator-owned subsystem is published in the source data.

04

Constraints

  • Built Dec 2021 (personal). Android platform limitations, API rate limits.

05

Architecture

  • Input: User search/browse queries, playback controls
  • Backend: Android SDK with REST API integration
  • Data & storage: Room database for caching, MediaPlayer for playback
  • External APIs: Musixmatch API for music metadata
  • Output: Music streaming player with search, playlist, and playback controls
FlowSoundScape system flow

Android SDK with REST API integration; Room database for caching, MediaPlayer for playback; Music streaming player with search, playlist, and playback controls

  1. input 01Input

    User search/browse queries, playback controls

  2. process 02Backend
    input ->

    Android SDK with REST API integration

  3. storage 03Data / storage
    backend ->

    Room database for caching, MediaPlayer for playback

  4. external 04External APIs
    backend ->

    Musixmatch API for music metadata

  5. output 05Output
    storage ->external ->

    Music streaming player with search, playlist, and playback controls

Routes

  • Input -> Backend
  • Backend -> Data / storage
  • Backend -> External APIs
  • Data / storage -> Output
  • External APIs -> Output

06

Key Technical Decisions

  • Implemented Room caching layer for Musixmatch API responses
  • Microservices architecture for playback/notifications

07

Implementation

  • Input layer: User search/browse queries, playback controls
  • Core system: Android SDK with REST API integration
  • Data layer: Room database for caching, MediaPlayer for playback
  • External boundary: Musixmatch API for music metadata
  • User output: Music streaming player with search, playlist, and playback controls

08

What Broke / What Didn't Work

  • Rejected: No caching, direct API calls (slower, hits rate limits). Chosen path: Implemented Room caching layer for Musixmatch API responses.
  • Rejected: Monolithic activity-based approach. Chosen path: Microservices architecture for playback/notifications.
  • Caching adds storage requirements but dramatically improves performance
  • Microservices add complexity but improve maintainability

09

Results

  • 70% API call reduction - Fewer requests to Musixmatch due to caching - Fewer requests to Musixmatch due to caching - resume.json
  • Full music streaming feature set implemented - Playback, search, notifications, file operations - Playback, search, notifications, file operations - resume.json

10

What I'd Change Now

  • Add offline download capability
  • Implement user accounts and sync
  • Support additional music sources beyond Musixmatch

11

Stack

  • Android SDK
  • Java
  • REST APIs
  • Musixmatch API
  • Room database
  • MediaPlayer
  • Gradle
  • Git

12

Links

  • Source docs: 2-projects.json
Deep dive prompts

Ask me about the trade-offs.

  • Why this architecture boundary exists: Android SDK with REST API integration
  • How I evaluated Fewer requests to Musixmatch due to caching
  • The hardest tradeoff: Caching adds storage requirements but dramatically improves performance
  • What I would change next: Add offline download capability