00

Mobile · 2023

Suwotify

Year
2023
Scope
Mobile · Academic
Role
Mobile Developer
Team
Team of 2
Stack
Flutter, Dart, Strapi, JavaScript
Status
Completed

A Spotify-style music player built for a mobile programming course.

A Flutter music streaming app modelled on Spotify, built as coursework for Mobile Application Programming, with playback, local persistence, and its own Strapi backend.

Suwotify is a music streaming application built in Flutter for the Mobile Application Programming course at Multi Data Palembang University. It reproduces the core shape of a streaming app (browsing a catalogue, opening a track, and playing it) rather than stopping at static screens.

Read moreShow less

The app is laid out in separate layers for screens, components, models, services, and data, with playback handled through an audio player and a YouTube player for tracks served that way. Session state persists locally between launches, and the catalogue is fetched over HTTP from a separate Strapi backend built alongside it in two companion repositories.

A noticeable share of the dependency list is animation work (staggered list animations, animated text, page transitions, and an animated splash screen) reflecting an emphasis on making the interface feel closer to a real product than a course submission.

Brief

Problem

The coursework asked for a mobile application; the harder target was building something with the working parts of a real streaming app rather than a mockup of one.

Solution

Build the full path (a Strapi backend serving the catalogue, an HTTP layer consuming it, real audio playback, and local persistence) inside a layered Flutter project.

My role

  1. 01

    Wrote 18 of the repository's 19 commits, covering the application end to end

  2. 02

    Structured the project into screens, components, models, services, and data layers

  3. 03

    Built the Strapi backend serving the catalogue in two companion repositories

Features

  1. 01

    Music catalogue fetched over HTTP from a Strapi backend

  2. 02

    Audio playback, with a YouTube player for tracks served that way

  3. 03

    Local persistence of session state between launches

  4. 04

    Animated interface: staggered lists, animated text, page transitions, and an animated splash screen

Architecture

A layered Flutter client (screens, components, models, services, and data) talking over HTTP to a separate Strapi backend maintained in its own repositories. Audio is handled by an audio player package alongside a YouTube player, and session state is kept in local shared preferences.

Front end
Flutter, Dart
Back end
Strapi, JavaScript
Tools
REST API
Integrations
YouTube