Major Changes: - Convert all JavaScript files to Parenscript for better maintainability - Move spectrum-analyzer to parenscript/ directory structure - Add parenscript-utils.lisp for shared utilities - Convert admin.js, player.js, front-page.js, auth-ui.js to Parenscript - Convert profile.js, users.js, recently-played.js to Parenscript Stream Reconnect Fixes (from merged PR): - Add reset-spectrum-analyzer function to properly clean up Web Audio API - Implement reconnect logic for pauses longer than 10 seconds - Detect stale audio in 'playing' event and force stream reconnection - Prevent 'Now Playing' updates while stream is paused - Reduce reconnect delay to 200ms for faster response - Add proper spectrum analyzer reset/reinit during reconnection UX Improvements: - Change live indicator from blink to smooth pulse (2s ease-in-out) - Pulse animation like old PowerBook/MacBook sleep indicator - Add MUTED indicator to spectrum analyzer when audio is muted - Spectrum continues to flow even when muted (data still streaming) - Red 'MUTED' text displayed in top-right corner of canvas Technical Details: - Parenscript files generate JavaScript via API endpoints - All player modes updated: main player, front page, popout, frame player - Improved audio context handling to only create once per element - Added comprehensive error handling and logging - Updated asteroid.asd to include parenscript module structure Documentation: - Updated all documentation dates to 2025-12-06 - Added PARENSCRIPT-EXPERIMENT.org documenting the conversion - Updated PROJECT-HISTORY.org with Phase 9 (Visual Audio Features) - Added comprehensive project statistics (408 commits, 9,300 LOC) This conversion improves code maintainability by using Lisp throughout the stack and makes it easier to share code between frontend and backend. |
||
|---|---|---|
| .. | ||
| API-ENDPOINTS.org | ||
| API-REFERENCE.org | ||
| DEVELOPMENT.org | ||
| DOCKER-STREAMING.org | ||
| INSTALLATION.org | ||
| PARENSCRIPT-EXPERIMENT.org | ||
| PLAYLIST-SYSTEM.org | ||
| POSTGRESQL-SETUP.org | ||
| PROJECT-HISTORY.org | ||
| PROJECT-OVERVIEW.org | ||
| README.org | ||
| STREAM-CONTROL.org | ||
| TESTING.org | ||
| TRACK-PAGINATION-SYSTEM.org | ||
| USER-MANAGEMENT-SYSTEM.org | ||
README.org
Asteroid Radio - Documentation Index
- Welcome to Asteroid Radio Documentation
- Quick Start
- Documentation Structure
- Current System Status
- Getting Started
- Support & Community
- About Asteroid Music
- Technical Architecture
Welcome to Asteroid Radio Documentation
Asteroid Radio is a modern internet radio platform designed for developers and music enthusiasts who want to run their own radio stations streaming Asteroid Music - the perfect soundtrack for coding and hacking sessions.
Quick Start
For immediate setup, see:
- Installation Guide - Get Asteroid Radio running
- Docker Streaming Setup - Docker-based streaming infrastructure
Documentation Structure
Core Documentation
Project Overview
Complete overview of Asteroid Radio's architecture, technology stack, and vision. Start here to understand what Asteroid Radio is and how it works.
Project History
Comprehensive development history from inception to present, including timeline, milestones, and contributor information.
Installation Guide
Comprehensive installation instructions for multiple operating systems, including system requirements, dependencies, and production deployment considerations.
Docker Streaming Setup
Complete guide to the Docker-based streaming infrastructure using Icecast2 and Liquidsoap. Includes container configuration, management scripts, and troubleshooting.
Development & Integration
Development Guide
Development environment setup, contributing guidelines, coding standards, and debugging procedures for developers working on Asteroid Radio.
API Endpoints Reference
Complete documentation of all REST API endpoints including authentication, tracks, playlists, player control, and admin functions.
Interface Reference
Documentation of streaming endpoints, Icecast admin interface, Liquidsoap telnet control, and Docker management commands.
Testing Guide
Automated testing suite documentation, test script usage, and manual testing procedures.
Feature Documentation
PostgreSQL Setup
Database configuration, schema design, and migration guide for PostgreSQL backend.
Playlist System
User playlist functionality including creation, management, and playback features.
User Management
User administration system with role management, authentication, and access control.
Track Pagination
Pagination system for efficient browsing of large music libraries.
Current System Status
What's Working Now
- Web Application: Full-featured web interface with authentication
- REST API: JSON API with 15+ endpoints for programmatic access
- User Management: Registration, login, roles (Admin/DJ/Listener), and profiles
- Music Library: Track management with pagination, search, and filtering
- Playlists: User playlists with creation and playback
- Multiple Player Modes: Inline, pop-out, and persistent frameset players
- Stream Queue Control: Admin control over broadcast stream queue
- Docker Streaming Infrastructure: Icecast2 + Liquidsoap containers
- Three Quality Streams: 128kbps MP3, 96kbps AAC, 64kbps MP3
- Admin Interface: Icecast web admin at http://localhost:8000/admin/
- Liquidsoap DJ Controls: Telnet control via localhost:1234
- Professional Features: Crossfading, ReplayGain normalization, metadata support
- PostgreSQL Database: Configured and ready for migration
- Dynamic Stream URLs: Automatic host detection for multi-environment support
- Responsive Design: Works on desktop and mobile devices
Stream URLs (when running)
- High Quality MP3: http://localhost:8000/asteroid.mp3 (128kbps)
- High Quality AAC: http://localhost:8000/asteroid.aac (96kbps)
- Low Quality MP3: http://localhost:8000/asteroid-low.mp3 (64kbps)
Getting Started
New Users
- Read the Project Overview to understand Asteroid Radio
- Follow the Installation Guide for your operating system
- Set up streaming with the Docker Guide
Developers
- Review the Development Guide for setup procedures
- Check the API Endpoints Reference for REST API documentation
- Review the Interface Reference for streaming controls
- See Testing Guide for automated testing
- Join our IRC channel: #asteroid.music on irc.libera.chat
System Administrators
- Follow the Installation Guide production deployment section
- Review Docker Streaming Setup for container management
- Monitor system resources and streaming performance
Support & Community
Getting Help
- Documentation: Start with the relevant guide above
- IRC Chat: Join #asteroid.music on irc.libera.chat
- Issues: Submit detailed bug reports with system information
- Logs: Check Docker container logs for troubleshooting
Contributing
- Review the Development Guide for contribution guidelines
- Follow coding standards and testing procedures
- Submit pull requests with clear descriptions
About Asteroid Music
Asteroid Radio streams Asteroid Music - a carefully curated genre designed for developers:
- Focus-Enhancing: Ambient, electronic, and instrumental tracks
- Coding-Optimized: Rhythms that complement programming flow
- Hacker Culture: Music that resonates with developer aesthetics
- Flow State: Tracks selected to maintain deep concentration
This isn't just background music - it's the soundtrack to the hacker lifestyle, designed by hackers for hackers who understand that the right music can elevate your code.
Technical Architecture
Asteroid Radio uses a modern, containerized architecture:
┌─────────────────────────────────────────────────────────────┐ │ Asteroid Radio Platform │ ├─────────────────────────────────────────────────────────────┤ │ Streaming Infrastructure (Docker) │ │ ├── Icecast2 (HTTP Streaming Server) │ │ ├── Liquidsoap (Audio Processing Pipeline) │ │ └── Multiple Format Support (AAC, MP3) │ ├─────────────────────────────────────────────────────────────┤ │ Control Interfaces │ │ ├── Icecast Admin Web Interface │ │ ├── Liquidsoap Telnet Control │ │ └── Docker Container Management │ └─────────────────────────────────────────────────────────────┘
For detailed technical information, see the Project Overview.
—
Last Updated: 2025-10-26 Documentation Version: 3.0