All projects

Project

TeamPlayer — Bachelor's thesis

An iOS app for listening to music together in communities — a shared player, chat and playlists in real time

  • Swift
  • UIKit
  • Vapor
  • Fluent
  • PostgreSQL
  • WebSocket
  • Python
  • FastAPI
  • Docker
Home: public communities and new tracks
Home: public communities and new tracks
Room: shared player and community chat
Room: shared player and community chat
A playlist in the library
A playlist in the library
Managing community members
Managing community members
3
services — iOS app, Vapor server and FastAPI service

Problem

Listening to music with friends remotely is awkward: everyone starts the track on their own device and playback drifts apart. Shared community rooms are needed where all members hear the same thing and can discuss the music in a chat.

Solution

The project has three parts. An iOS app in Swift and UIKit: a home screen with public communities, search, a library with playlists, and a room with a shared player and chat. A Vapor server with PostgreSQL (Fluent, migrations): users and tokens, rooms — public or joined by code, members and the DJ role, room rating, playlists. Over WebSocket the server streams audio in chunks to every member of a room, syncs play / pause / next / back commands and runs the chat. A separate FastAPI service works with Yandex Music: search, tracks, albums, favourites and the playlist of the day.

Results

  • Synchronized playback for every room member over WebSocket
  • Real-time community chat