/ design.org
design.org
  1  * Asteroid Music <2025-08-12 Tue>
  2  
  3  This project will define an internet radio station with the express
  4  purpose of streaming Asteroid Music to the hackers of the world. This
  5  project is imagined as a shared endeavour undertaken among the
  6  denizens of the [[https://www.twitch.tv/systemcrafters][#systemcrafters community]] on twitch and the libera
  7  chat IRC network.
  8  
  9  * Feature Breakdown for Internet Radio Service
 10  A breakdown of must-have and optional features for a Common Lisp-based streaming platform.
 11  
 12  ** Core Music & Content Management
 13  - Playlist CRUD, Track Library Management
 14  - Auto-DJ mode with randomization and repeat avoidance
 15  - Metadata broadcasting
 16  - Cue points & crossfades
 17  
 18  ** Live DJ Integration
 19  - Live DJ handoff with authentication
 20  - Mic & voice-over support
 21  - Remote cueing, hot swap
 22  - Jingles & soundboard
 23  
 24  ** Scheduling & Automation
 25  - Show scheduling
 26  - Pre-recorded shows
 27  - Event triggers
 28  - Failover streams
 29  
 30  ** Listener Features
 31  - Web player with live metadata
 32  - Song requests
 33  - Dedications & shoutouts
 34  - Live chat
 35  - Track voting
 36  
 37  ** DJ & Admin Dashboard
 38  - User roles & permissions
 39  - Track queue control
 40  - Upload system
 41  - Analytics
 42  - Audit logs
 43  
 44  ** Streaming Infrastructure
 45  - Multiple bitrate streams
 46  - Podcast export
 47  - Replay system
 48  - Recording
 49  
 50  ** Cool Extras
 51  - Social push for 'now playing'
 52  - Visualizer output
 53  - Listener polls
 54  - API for automation
 55  
 56  * System Architecture Overview
 57  Architecture layers and data flow from DJs to listeners, with Common Lisp core handling business logic and integration with streaming backend (Liquidsoap + Icecast).
 58  
 59  ** Components
 60  - Ingest & Switchboard
 61  - Transcoder/Packager
 62  - Delivery layer
 63  - Web Player
 64  - Common Lisp Core
 65  - Database/Storage
 66  - Analytics/Observability
 67  
 68  * MVP Definition
 69  
 70  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.
 71  
 72  MVP for this project includes:
 73  - Auto-DJ playback
 74  - Scheduled playlists
 75  - Icecast streaming
 76  - Live DJ handoff
 77  - Basic admin dashboard
 78  - Postgres-backed library
 79  - Now-playing metadata
 80  - Basic web player
 81  
 82  * MVP vs Later Feature Checklist
 83  This checklist helps ensure Phase 2 features do not slip into the MVP development window.
 84  
 85  ** MVP Features (Weeks 1–7)
 86  | Feature | Description |
 87  |---------|-------------|
 88  | Project bootstrap | Lisp API skeleton, DB schema v0, Icecast + Liquidsoap dev stack |
 89  | Library ingest | Metadata extraction |
 90  | Auto-DJ in Liquidsoap | Crossfade, loudness norm, now-playing metadata |
 91  | Scheduler engine | Recurring shows/playlists |
 92  | Live DJ handoff | Auth & smooth transitions |
 93  | Listener requests | Endpoint, queue control, audit log |
 94  | Show recording | Archive (local/7 days?) |
 95  
 96  ** Later / Phase 2 Features (Weeks 8–10)
 97  | Feature | Description |
 98  |---------|-------------|
 99  | Roles & permissions | Admin/DJ/Curator, login/password reset |
100  | Nightly backups | - |
101  | Analytics dashboard | Listener count, time-on-station |
102  | Prometheus/Grafana | Metrics, incident alerts |
103  | QA | Runbook, load testing, public landing page skin |
104  | Stability test | 48h uninterrupted operation |