asteroid/TODO.org

4.7 KiB

Rundown to Launch. Still to do:

Setup asteroid.radio server at Hetzner [7/7]

  • Provision a VPS
  • Firewall
  • Install user utilities
  • Install base toolchain
  • Install lisp
  • Set up DNS
  • Create user accounts

Deploy the system [10/10]

  • Install and configure HAproxy
  • Create a user to contain asteroid
  • Checkout asteroid in ~asteroid on b612
  • Build the docker containers
  • Build asteroid from the sources
  • Configure HAproxy to front http://asteroid.radio/ -> http://localhost:8080/
  • Set ASTEROID_STREAM_URL in ~asteroid/.bashrc
  • Start the docker containers for liquidsoap, icecast, and postgresql
  • Start asteroid, check the stream (Underworld:Juanita/Kiteless)
  • Announce that the system is live in #asteroid.radio

PROBLEMS [3/12]

  1. Liquidsoap is exposing its management console via telnet on the exterior network interface of b612.asteroid.radio
  2. icecast is also binding the external interface on b612, which it should not be. HAproxy is there to mediate this flow.
  3. We're still on the built in i-lambdalite database
  4. The templates still advertise the default administrator password, which is no bueno.
  5. We need to work out the TLS situation with letsencrypt, and integrate it into HAproxy.
  6. The administrative interface should be beefed up. 6.1) [X] Deactivate users 6.2) [X] Change user access permissions 6.3) [ ] Listener statistics, breakdown by day/hour, new users, % changed &c
  7. When the player is paused, there are pretty serious stream sync issues in the form of stuttering for some time after the stream is unpaused.
  8. User profile pages should probably be fleshed out.
  9. the stream management features aren't there for Admins or DJs.
  10. The "Scan Library" feature is not working in the main branch
  11. The player widget should be styled so it fits the site theme on systems running 'light' thmes.
  12. ensure each info field 'Listeners: ..' &c has only one instance per page.

Server runtime configuration [0/1]

  • parameterize all configuration for runtime loading [0/2]

    • strip hard coded configurations out of the system
    • add configuration template file to the project

[X] Database [0/1]

  • PostgresQL [1/3]

    • Add a postgresql docker image to our docker-compose file.
    • Configure radiance for postres.
    • Migrate all schema to new database.

[X] Page Flow [2/2] COMPLETE

  • When a user logs in, their user profile page should become the root node of the app in their view.
  • When the admin user logs in, their view should become the admin profile page which should have panels for adminstering various aspects of the station.

note: Front-page conditional elements working correctly - nav links display based on authentication status and user role (Profile/Admin/Logout for logged-in users, Login/Register for anonymous users).

[X] Templates: move our template hyrdration into the Clip machinery [4/4] COMPLETE

  • Admin Dashboard [2/2]

    • System Status [4/4]

      • Server Status (Shows 🟢 Running)
      • Database Status (Shows connection status)
      • Liquidsoap Status (Checks Docker container)
      • Icecast Status (Checks Docker container)
    • Music Library Management [3/3]

      • Add Music Files (Upload and scan working)
      • Track Management (Pagination complete - 20 tracks per page, 4 pages total) Pagination implemented with configurable items per page (10/20/50/100).
      • Player Control (Play/pause/stop working with HTML5 audio) play/pause/edit &etc
      • User Management (Moved to separate /admin/users page)
  • Live Stream

    • Now Playing (Working correctly - displays artist and track)
  • Front Page [3/3]

    • Station Status (Shows live status, listeners, quality)
    • Live Stream (Green indicator, quality selector working)
    • Now Playing (Updates every 10s from Icecast, no HTML bugs)
  • Web Player [5/6] ⚠️ MOSTLY COMPLETE (Playlists limited by database)

    • Live Radio Stream (Working with quality selector)
    • Now Playing (Updates correctly from Icecast)
    • Personal Track Library (Pagination: 20 tracks/page, search working)
    • Audio Player (Full controls: play/pause/prev/next/shuffle/repeat/volume)
    • Playlists (PARTIAL - Can create/view, but cannot save/load tracks - requires PostgreSQL)

      • Create empty playlists
      • View playlists
      • Save queue as playlist (tracks don't persist - db:update fails)
      • Load playlists (playlists are empty - no tracks saved)
      • Edit playlists (requires PostgreSQL)
    • Play Queue (Add tracks, clear queue - save as playlist blocked by database)