#+TITLE: Asteroid Radio - Project Development History #+AUTHOR: Asteroid Radio Development Team #+DATE: 2025-10-26 #+DESCRIPTION: Comprehensive history of the Asteroid Radio project from inception to present * Project Overview Asteroid Radio is a web-based internet radio station built with Common Lisp, featuring a hacker-themed terminal aesthetic. The project combines the Radiance web framework with Icecast/Liquidsoap streaming infrastructure to create a full-featured music streaming platform. ** Technology Stack - *Backend*: Common Lisp (SBCL), Radiance web framework - *Streaming*: Icecast2, Liquidsoap - *Database*: PostgreSQL (configured, ready for migration) - *Frontend*: HTML5, JavaScript, CLIP templating, LASS (CSS in Lisp) - *Infrastructure*: Docker, Docker Compose * Project Timeline ** Phase 1: Project Inception (August 2025) *** 2025-08-12: Initial Commit - *Author*: Brian O'Reilly (Fade) - Project founded and initial repository created - Basic project structure established - Core Radiance framework integration begun ** Phase 2: Foundation Building (September - Early October 2025) *** Core Features Established - Basic web server setup with Radiance - Initial music library scanning functionality - Database integration for track metadata - Basic authentication system - Front-end page structure *** Key Contributors Join - Glenn Thompson (glenneth) begins major contributions - Luis Pereira joins for UI/UX improvements - Collaborative development model established ** Phase 3: Template System & UI Overhaul (October 2025) *** 2025-10-04 to 2025-10-06: CLIP Template Migration - *Lead*: Luis Pereira, Glenn Thompson - Migrated from inline HTML to CLIP templating system - Established consistent site-wide styling - Implemented VT323 retro terminal font - Created reusable template components *** 2025-10-04 to 2025-10-07: User Management System - *Lead*: Glenn Thompson - User profile pages with edit functionality - Registration and authentication UI - Role-based access control (admin, DJ, listener) - User profile management interface *** 2025-10-05: Navigation Improvements - *Lead*: Luis Pereira - Unified navigation bar across all pages - Improved responsive design - Better mobile experience ** Phase 4: API Refactoring & Testing (October 8-10, 2025) *** 2025-10-08: Major API Overhaul - *Lead*: Glenn Thompson - Refactored all endpoints to use Radiance's define-api macro - Standardized JSON API responses - API-aware authentication (auto-detects API vs web requests) - Comprehensive automated test suite added *** 2025-10-08 to 2025-10-09: Frontend JavaScript Updates - Fixed all frontend code to work with new API endpoints - Improved error handling - Better async/await patterns *** 2025-10-10: Documentation Sprint - *Lead*: Glenn Thompson - Major documentation cleanup - Added comprehensive API documentation - Created testing guides - Updated all core documentation files ** Phase 5: Streaming Infrastructure (October 8-14, 2025) *** 2025-10-08: Liquidsoap DJ Controls - *Lead*: Glenn Thompson - Telnet integration with Liquidsoap - Real-time stream control - Skip track functionality - Queue management via telnet commands *** 2025-10-10: Dynamic Stream URL Support - *Lead*: Glenn Thompson - Stream base URL as template variable - Support for multiple deployment environments - Preparation for multi-network access *** 2025-10-14: Stream Queue System - *Lead*: Brian O'Reilly, Glenn Thompson - M3U playlist queue management - Admin UI for queue control - Add/remove tracks from stream queue - Real-time queue updates *** 2025-10-14: Audio Quality Improvements - ReplayGain volume normalization - Reduced buffering - Improved player UI - Better streaming performance ** Phase 6: Advanced Features (October 12-17, 2025) *** 2025-10-12: Role-Based Page Flow - *Lead*: Glenn Thompson - Intelligent page routing based on user role - Admin-specific workflows - DJ control interfaces - Enhanced user experience *** 2025-10-13: HTML Partial Hydration - *Lead*: Luis Pereira - Now-playing partial component - Server-side rendering with client updates - Reduced JavaScript complexity - Better performance *** 2025-10-15 to 2025-10-16: Configuration System - *Lead*: Brian O'Reilly - Dedicated configuration namespace exploration - Environment-based configuration - Improved deployment flexibility *** 2025-10-16: Comprehensive Documentation Update - *Lead*: Glenn Thompson - PROJECT-OVERVIEW updated with all features - Stream queue and ReplayGain documentation - Complete feature documentation *** 2025-10-17: Code Quality Improvements - *Lead*: Glenn Thompson - Code consistency refactoring - Bug fixes (track search query variable) - Maintainability improvements - Better code organization ** Phase 7: Player Evolution (October 19-25, 2025) *** 2025-10-19: Pop-Out Player - *Lead*: Glenn Thompson - Standalone pop-out player window - Independent audio playback - Queue management improvements - Multi-window support *** 2025-10-19: Persistent Audio Player (Frameset) - *Lead*: Glenn Thompson - Frameset-based persistent player - Audio continues during navigation - Bottom-frame player bar - Seamless listening experience *** 2025-10-21: Hybrid Player System - *Lead*: Glenn Thompson - Combined frameset and pop-out options - User preference storage (localStorage) - Flexible playback modes - Enhanced user choice *** 2025-10-24: Dynamic Stream URL Detection - *Lead*: Glenn Thompson - Automatic host detection from HTTP headers - Multi-environment support (localhost, Tailscale, LAN) - Fixed remote access issues - No configuration needed for different networks *** 2025-10-25: Typography Consistency Fix - *Lead*: Glenn Thompson - Replaced Courier New with VT323 in persistent player - Consistent font usage site-wide - Addressed styling feedback - Improved visual coherence ** Phase 8: Docker Deployment & Documentation (October 26 - November 1, 2025) *** 2025-10-19: User Initialization Retry Logic - *Lead*: Luis Pereira (easilok) - Fixed user initialization retry mechanism - Improved reliability on startup - Better error handling *** 2025-10-26: Custom Environment Variables for Streams - *Lead*: Luis Pereira (easilok) - Added MUSIC_LIBRARY environment variable - Added QUEUE_PLAYLIST environment variable - Flexible path configuration for Docker deployments *** 2025-10-26: Docker Setup for Asteroid Application - *Lead*: Luis Pereira (easilok) - Created Dockerfile.asteroid for app containerization - Added docker-compose.asteroid.yml - Radiance configuration for containerized deployment - Complete Docker-based deployment solution *** 2025-10-26: Docker Deployment Documentation - *Lead*: Luis Pereira (easilok) - Comprehensive Docker deployment guide in INSTALLATION.org - Separate sections for stream services and application - Environment variable documentation - Build and deployment instructions *** 2025-10-26: Comprehensive Documentation Update - *Lead*: Glenn Thompson - Created PROJECT-HISTORY.org with complete timeline - Updated all documentation dates to 2025-10-26 - Added current features across all docs - Updated repository URLs to GitHub - Documentation version 3.0 *** 2025-10-28: Documentation Refinements - *Lead*: Glenn Thompson - Fixed music directory location (asteroid/music/ not docker/music/) - Removed redundant Python/JavaScript examples from API docs - Added package manager notes for cross-distribution compatibility - Clarified symlink support for music directories *** 2025-11-01: Documentation Merge and Cleanup - *Lead*: Glenn Thompson - Merged upstream Docker deployment documentation - Removed obsolete session notes - Synchronized with upstream/main - Prepared comprehensive documentation PR * Development Statistics ** Contributors (by commit count) 1. Glenn Thompson (glenneth/Glenneth) - 135+ commits 2. Brian O'Reilly (Fade) - 55+ commits 3. Luis Pereira (easilok) - 23+ commits ** Total Commits: 213+ commits ** Active Development Period - Start: August 12, 2025 - Current: November 1, 2025 - Duration: ~2.75 months of active development * Major Features Implemented ** Core Functionality - ✅ Music library scanning and metadata extraction - ✅ PostgreSQL database integration (configured, ready for migration) - ✅ Track search and filtering - ✅ Playlist management - ✅ Stream queue control - ✅ Live streaming via Icecast/Liquidsoap ** User Management - ✅ User registration and authentication - ✅ Role-based access control (Admin, DJ, Listener) - ✅ User profiles with edit functionality - ✅ Session management - ✅ Role-based page flow ** Streaming Features - ✅ Multiple quality options (AAC 96k, MP3 128k, MP3 64k) - ✅ ReplayGain volume normalization - ✅ Live now-playing information - ✅ Icecast integration - ✅ Liquidsoap DJ controls - ✅ Stream queue management ** Player Options - ✅ Inline web player - ✅ Pop-out player window - ✅ Persistent frameset player - ✅ Hybrid player system - ✅ Quality selector - ✅ Auto-reconnect on errors ** API & Integration - ✅ RESTful JSON API - ✅ API-aware authentication - ✅ Comprehensive test suite - ✅ Telnet integration with Liquidsoap - ✅ Real-time status updates ** UI/UX - ✅ Retro terminal aesthetic (VT323 font) - ✅ Responsive design - ✅ CLIP templating system - ✅ LASS CSS preprocessing - ✅ Consistent navigation - ✅ HTML partial hydration ** Infrastructure - ✅ Docker containerization (streams and application) - ✅ Docker Compose orchestration - ✅ Dockerfile for Asteroid application - ✅ Environment variable configuration - ✅ PostgreSQL database (configured) - ✅ Multi-environment support - ✅ Dynamic URL detection * Technical Milestones ** Architecture Evolution 1. *Initial*: Monolithic HTML generation 2. *Template Migration*: CLIP templating system 3. *API Standardization*: Radiance define-api macros 4. *Component Architecture*: HTML partials and hydration 5. *Multi-Mode Player*: Hybrid player system ** Code Quality Improvements - Comprehensive test suite - API refactoring for consistency - Code organization and maintainability - Documentation standards - Consistent error handling ** Performance Optimizations - ReplayGain normalization - Reduced buffering - Efficient database queries - Parallel music scanning - Client-side caching * Current State (November 2025) ** Production Ready Features - Full music streaming platform - User management system - Admin control panel - DJ controls - Multiple player modes - Complete Docker deployment (streams + application) - Multi-environment support with dynamic URLs - Comprehensive documentation ** Active Development Areas - PostgreSQL migration (configured, ready for data migration) - JavaScript code cleanup and refactoring - Additional UI improvements - Performance optimization - Feature expansion based on user feedback ** Recent Achievements - ✅ Complete Docker containerization - ✅ Environment variable configuration - ✅ Comprehensive documentation overhaul - ✅ Cross-distribution package manager support - ✅ Streamlined deployment process ** Known Issues & Future Work - PostgreSQL migration (configured, pending data migration) - Continued UI/UX refinement - Additional streaming features (per design.org) - Enhanced playlist functionality - Live chat and song requests - Mobile app considerations - Scalability improvements * Project Philosophy ** Design Principles - *Hacker Aesthetic*: Terminal-inspired retro design - *User Choice*: Multiple player modes and options - *Simplicity*: Clean, focused interface - *Performance*: Fast, responsive experience - *Flexibility*: Multi-environment support ** Development Approach - Collaborative development - Iterative improvements - Comprehensive testing - Documentation-first - User feedback driven * Acknowledgments ** Core Team - *Brian O'Reilly (Fade)*: Project founder, architecture, streaming infrastructure - *Glenn Thompson (glenneth)*: Major features, API, player systems, documentation - *Luis Pereira*: UI/UX, templating, frontend improvements ** Technologies - Radiance web framework - Icecast streaming server - Liquidsoap audio processing - PostgreSQL database - Common Lisp ecosystem * Conclusion Asteroid Radio has evolved from a simple concept into a full-featured internet radio platform in just 2.75 months of active development. The project demonstrates the power of Common Lisp for web development and the collaborative nature of open-source development. With complete Docker deployment, comprehensive documentation, and a growing feature set, Asteroid Radio is ready for production use while continuing to evolve with regular improvements, bug fixes, and new features based on user needs and technical requirements. ** Project Links - Repository: https://github.com/fade/asteroid - Contributors: https://github.com/fade/asteroid/graphs/contributors - IRC: #asteroid.music on irc.libera.chat --- *Last Updated: 2025-11-01*