asteroid/docs
Glenn Thompson af51f7d6e9 feat: Convert JavaScript to Parenscript with stream fixes and UX improvements
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.
2025-12-06 18:57:55 +03:00
..
API-ENDPOINTS.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
API-REFERENCE.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
DEVELOPMENT.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
DOCKER-STREAMING.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
INSTALLATION.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
PARENSCRIPT-EXPERIMENT.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
PLAYLIST-SYSTEM.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
POSTGRESQL-SETUP.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
PROJECT-HISTORY.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
PROJECT-OVERVIEW.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
README.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
STREAM-CONTROL.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
TESTING.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
TRACK-PAGINATION-SYSTEM.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00
USER-MANAGEMENT-SYSTEM.org feat: Convert JavaScript to Parenscript with stream fixes and UX improvements 2025-12-06 18:57:55 +03:00

README.org

Asteroid Radio - Documentation Index

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:

  1. Installation Guide - Get Asteroid Radio running
  2. 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)

Getting Started

New Users

  1. Read the Project Overview to understand Asteroid Radio
  2. Follow the Installation Guide for your operating system
  3. Set up streaming with the Docker Guide

Developers

  1. Review the Development Guide for setup procedures
  2. Check the API Endpoints Reference for REST API documentation
  3. Review the Interface Reference for streaming controls
  4. See Testing Guide for automated testing
  5. Join our IRC channel: #asteroid.music on irc.libera.chat

System Administrators

  1. Follow the Installation Guide production deployment section
  2. Review Docker Streaming Setup for container management
  3. 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