2026
SpeakLink - centralized store announcements and live broadcasting
A live announcement system for a retail chain: an announcement spoken or picked at head office reaches the speakers in every store, and a browser link for anyone else who needs to hear it. Built for Rajmandir Hypermarket, then made public and extended with web listeners and chat. FastAPI, React, and a packaged Windows receiver agent per store.
SpeakLink carries announcements from one head office browser to the shops. Someone at HQ speaks into a microphone, or picks a recorded announcement, chooses which stores should hear it, and the audio arrives on the amplifiers in those shops. The same broadcast also opens a listener link, so people who are not standing in a store can hear it in a browser, and a chat panel beside the console lets them write back.
Three programs, on three different machines.
HQ is a FastAPI application that serves the API, the WebSocket endpoints and the built React dashboard from one Uvicorn worker on one origin. One worker is not a default left alone: receiver connections and live broadcast state are held in process memory, and the login rate limiter is per process, so a second worker would give each its own limiter and multiply the allowance.
Each store runs a Windows receiver agent, packaged as an executable with FFmpeg inside it, so the shop computer needs no Python, no Node and no copy of the repository. It starts from a Windows Scheduled Task at user logon, deliberately and not as a service: it plays audio into a user session, and Windows session 0 has no audio device.