Live Broadcast Player
The central player shows whether the station is live, who is on air, and how many listeners are connected. Playback starts with a single tap.
PERSONAL PROJECT · CASE STUDY
RadioApp is my original live web radio project. It brings together a public player, browser-based DJ studio, community chat, reactions, song requests, moderation, and administration in one responsive app that can also be installed as a PWA.
LISTENER EXPERIENCE
The public experience is designed as a direct path into the current broadcast — without unnecessary steps, with a clear live status and community features always within reach.
The central player shows whether the station is live, who is on air, and how many listeners are connected. Playback starts with a single tap.
Current-track information updates in real time, so listeners can see the artist, title, and the state of the active broadcast.
The layout is refined for phones, tablets, and desktops. Controls, chat, and broadcast cards adapt into a comfortable single-column interface on smaller screens.
RadioApp can be added to the home screen without an app store. The PWA provides its own icon, standalone display, and a quick way back to the station.
DJ STUDIO
The protected DJ area guides the user from selecting an audio source to ending the show. Its interface keeps the most important broadcast controls in one place.
The DJ can share a microphone or system audio. The app checks permissions, lists available devices, and surfaces problems before a broadcast begins.
Starting and ending a show, volume, connection status, and broadcast metrics are available from one panel without switching between screens.
The DJ can enter track details manually, while optional recognition helps automatically publish current music information to listeners.
Broadcasting features are limited to authorised accounts. Sessions, roles, and administrative actions are validated on the server.
COMMUNITY
RadioApp is more than a player. Listeners can participate in the show, while DJs and administrators have tools for managing conversations and music suggestions.
Messages appear instantly for every connected user. Presence and status information help show what is happening in the live room.
Quick reactions let the audience respond to the music without interrupting the conversation. Their availability can be controlled in broadcast settings.
A listener can send a song suggestion directly through chat. The DJ sees pending requests and can accept or reject them, with the status updating across every device.
Administrators can manage messages, users, reactions, limits, and room behaviour. Settings are stored centrally and synchronised with clients.
ENGINEERING
The project combines the application layer, real-time communication, audio transport, and persistent data. Everything runs in containers and can be deployed to a standard VPS.
ASP.NET Core handles application logic, accounts, authorisation, APIs, and rendered views, while JavaScript powers user interactions and updates without page reloads.
SignalR synchronises chat, status, settings, and metadata, while LiveKit/WebRTC provides low-latency audio transport from the DJ to listeners.
PostgreSQL stores durable application data, while Redis supports fast state and messaging. Separating these roles makes the service easier to develop and maintain.
The app, database, Redis, and media server run as separate Docker Compose services. A reverse proxy and HTTPS expose secure endpoints for both the website and live communication.