Add detailed design document for Asteroid Music radio station (#1)
This commit is contained in:
parent
7b8e727dfd
commit
6adf23aee7
96
design.org
96
design.org
|
|
@ -6,3 +6,99 @@ project is imagined as a shared endeavour undertaken among the
|
||||||
denizens of the [[https://www.twitch.tv/systemcrafters][#systemcrafters community]] on twitch and the libera
|
denizens of the [[https://www.twitch.tv/systemcrafters][#systemcrafters community]] on twitch and the libera
|
||||||
chat IRC network.
|
chat IRC network.
|
||||||
|
|
||||||
|
* Feature Breakdown for Internet Radio Service
|
||||||
|
A breakdown of must-have and optional features for a Common Lisp-based streaming platform.
|
||||||
|
|
||||||
|
** Core Music & Content Management
|
||||||
|
- Playlist CRUD, Track Library Management
|
||||||
|
- Auto-DJ mode with randomization and repeat avoidance
|
||||||
|
- Metadata broadcasting
|
||||||
|
- Cue points & crossfades
|
||||||
|
|
||||||
|
** Live DJ Integration
|
||||||
|
- Live DJ handoff with authentication
|
||||||
|
- Mic & voice-over support
|
||||||
|
- Remote cueing, hot swap
|
||||||
|
- Jingles & soundboard
|
||||||
|
|
||||||
|
** Scheduling & Automation
|
||||||
|
- Show scheduling
|
||||||
|
- Pre-recorded shows
|
||||||
|
- Event triggers
|
||||||
|
- Failover streams
|
||||||
|
|
||||||
|
** Listener Features
|
||||||
|
- Web player with live metadata
|
||||||
|
- Song requests
|
||||||
|
- Dedications & shoutouts
|
||||||
|
- Live chat
|
||||||
|
- Track voting
|
||||||
|
|
||||||
|
** DJ & Admin Dashboard
|
||||||
|
- User roles & permissions
|
||||||
|
- Track queue control
|
||||||
|
- Upload system
|
||||||
|
- Analytics
|
||||||
|
- Audit logs
|
||||||
|
|
||||||
|
** Streaming Infrastructure
|
||||||
|
- Multiple bitrate streams
|
||||||
|
- Podcast export
|
||||||
|
- Replay system
|
||||||
|
- Recording
|
||||||
|
|
||||||
|
** Cool Extras
|
||||||
|
- Social push for 'now playing'
|
||||||
|
- Visualizer output
|
||||||
|
- Listener polls
|
||||||
|
- API for automation
|
||||||
|
|
||||||
|
* System Architecture Overview
|
||||||
|
Architecture layers and data flow from DJs to listeners, with Common Lisp core handling business logic and integration with streaming backend (Liquidsoap + Icecast).
|
||||||
|
|
||||||
|
** Components
|
||||||
|
- Ingest & Switchboard
|
||||||
|
- Transcoder/Packager
|
||||||
|
- Delivery layer
|
||||||
|
- Web Player
|
||||||
|
- Common Lisp Core
|
||||||
|
- Database/Storage
|
||||||
|
- Analytics/Observability
|
||||||
|
|
||||||
|
* MVP Definition
|
||||||
|
|
||||||
|
In this context, MVP (Minimum Viable Product) means the smallest set of features that allows the station to operate live to listeners, reliably, with essential functionality.
|
||||||
|
|
||||||
|
MVP for this project includes:
|
||||||
|
- Auto-DJ playback
|
||||||
|
- Scheduled playlists
|
||||||
|
- Icecast streaming
|
||||||
|
- Live DJ handoff
|
||||||
|
- Basic admin dashboard
|
||||||
|
- Postgres-backed library
|
||||||
|
- Now-playing metadata
|
||||||
|
- Basic web player
|
||||||
|
|
||||||
|
* MVP vs Later Feature Checklist
|
||||||
|
This checklist helps ensure Phase 2 features do not slip into the MVP development window.
|
||||||
|
|
||||||
|
** MVP Features (Weeks 1–7)
|
||||||
|
| Feature | Description |
|
||||||
|
|---------|-------------|
|
||||||
|
| Project bootstrap | Lisp API skeleton, DB schema v0, Icecast + Liquidsoap dev stack |
|
||||||
|
| Library ingest | Metadata extraction |
|
||||||
|
| Auto-DJ in Liquidsoap | Crossfade, loudness norm, now-playing metadata |
|
||||||
|
| Scheduler engine | Recurring shows/playlists |
|
||||||
|
| Live DJ handoff | Auth & smooth transitions |
|
||||||
|
| Listener requests | Endpoint, queue control, audit log |
|
||||||
|
| Show recording | Archive (local/7 days?) |
|
||||||
|
|
||||||
|
** Later / Phase 2 Features (Weeks 8–10)
|
||||||
|
| Feature | Description |
|
||||||
|
|---------|-------------|
|
||||||
|
| Roles & permissions | Admin/DJ/Curator, login/password reset |
|
||||||
|
| Nightly backups | - |
|
||||||
|
| Analytics dashboard | Listener count, time-on-station |
|
||||||
|
| Prometheus/Grafana | Metrics, incident alerts |
|
||||||
|
| QA | Runbook, load testing, public landing page skin |
|
||||||
|
| Stability test | 48h uninterrupted operation |
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue