Project
TeamPlayer — Bachelor's thesis
An iOS app for listening to music together in communities — a shared player, chat and playlists in real time
- 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