105 lines
3.1 KiB
Org Mode
105 lines
3.1 KiB
Org Mode
* Asteroid Music <2025-08-12 Tue>
|
||
|
||
This project will define an internet radio station with the express
|
||
purpose of streaming Asteroid Music to the hackers of the world. This
|
||
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
|
||
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 |
|