Streamly — Android App
Back to Projects
📱

Streamly — Android App

A polished Android content discovery app built with Kotlin and Jetpack Compose, demonstrating modern Android practices: MVVM, Compose, Room, Coroutines, and Retrofit.

Role:Solo Android Developer
Timeline:Semester 1, 2024
Status:Completed — University Project
StackKotlinJetpack ComposeAndroid SDKMVVMRoomRetrofitCoroutinesMaterial 3

Overview

Streamly is an Android streaming content discovery app built entirely with modern Android tools. Users can browse movies and TV shows from a public REST API, manage a watchlist, and explore content by genre — all in a clean, Material 3-compliant interface.

The project demonstrates production-ready Android patterns: full MVVM stack, Jetpack Compose UI, Room for local storage, Retrofit for networking, and Kotlin Coroutines for async operations.

Features

  • Content browsing by genre, release date, and rating using a public REST API
  • Personalised watchlist with local persistence using Room (SQLite)
  • User profile with viewing history and preferences
  • Detail screens for movies and TV shows with synopsis, cast, and trailers
  • Search functionality with debounced API queries to reduce network load
  • Smooth animations with Jetpack Compose Motion APIs
  • Responsive layout supporting phone and tablet form factors
  • Dark mode support following Material 3 system theming

Architecture

MVVM Architecture

Clean separation: ViewModel, StateFlow, and Repository patterns throughout.

Jetpack Compose UI

Declarative UI with custom composables, lazy lists, and animated transitions.

Room Database

Local SQLite persistence via Room for offline watchlist and history caching.

Retrofit & Coroutines

Async API calls with Kotlin Coroutines and Flow for reactive data streams.

Challenges & Solutions

Challenge: UI state across config changes

Solution: ViewModel-scoped StateFlow survives activity recreation; Compose collects state reactively.

Challenge: Efficient large-list rendering

Solution: LazyColumn with key-based recomposition and Paging 3 for incremental loading.

Challenge: Offline-first watchlist

Solution: Room as single source of truth; Repository layer syncs between local and remote.

Why This Matters

Streamly shows I can build polished, production-architecture Android apps using the current recommended stack. It reflects understanding that goes beyond tutorials: clean architecture, async data flows, and platform-compliant UI.