A protocol, not a library
Radio state is broadcast over Socket.io, audio is served over HTTP behind tokens. A client can be written in any language, not just React.
Server documentation (docs) and client implementation guide. Every listener hears the same track at the same second.
Writing your own client. Start with Build a client in 15 minutes — the end-to-end path from connecting to hearing sound. Then read Tokens and access and Message format and i18n; those two carry the traps that cost the most time.
Controlling the broadcast. Build an admin client covers logging in, permissions, the queue and uploads; Live broadcast walkthrough covers going on air, guests and moderation, with sequence diagrams.
Running your own radio. See Running your own server. The minimal setup needs neither cloud storage nor a database.
The endpoint, event and privilege tables are generated from the server source by docs/scripts/extract-api.mjs, so they always match the code. Every entry is described, and every description is translated:
| Page | English |
|---|---|
| Build a client in 15 minutes | ✅ |
| Running your own server | ✅ |
| Tokens and access | ✅ |
| Message format and i18n | ✅ |
| Playback modes | ✅ |
| Stability and compatibility | ✅ |
| Build an admin client | ✅ |
| Live broadcast walkthrough | ✅ |
| REST, events and privileges reference | ✅ |
Everything is translated. Pages are written by hand, not machine-translated: a plausible-sounding but wrong protocol description is worse than none.
The code is open source and hosted on GitHub: github.com/koropkaras777/radio. Issues and pull requests are welcome.
TC5rLcwx8fuixAygXxvFFTM1q46i6XCzcS, Ethereum (ERC20) 0x6D7A457F7892AF9B316a3262eFDc2056C3f435ef, Solana 2dLfnrjUCJsfTEQyaq1t3WupJPyfckHBWvcUsvxxFjUv