asteroid/TODO.org

102 lines
4.7 KiB
Org Mode

* Rundown to Launch. Still to do:
* Setup asteroid.radio server at Hetzner [7/7]
- [X] Provision a VPS
- [X] Firewall
- [X] Install user utilities
- [X] Install base toolchain
- [X] Install lisp
- [X] Set up DNS
- [X] Create user accounts
* Deploy the system [10/10]
- [X] Install and configure HAproxy
- [X] Create a user to contain asteroid
- [X] Checkout asteroid in ~asteroid on b612
- [X] Build the docker containers
- [X] Build asteroid from the sources
- [X] Configure HAproxy to front http://asteroid.radio/ -> http://localhost:8080/
- [X] Set ASTEROID_STREAM_URL in ~asteroid/.bashrc
- [X] Start the docker containers for liquidsoap, icecast, and postgresql
- [X] Start asteroid, check the stream (Underworld:Juanita/Kiteless)
- [X] Announce that the system is live in #asteroid.radio
** PROBLEMS [3/12]
1) [X] Liquidsoap is exposing its management console via telnet on the exterior network interface of b612.asteroid.radio
2) [X] icecast is also binding the external interface on b612, which it
should not be. HAproxy is there to mediate this flow.
3) [X] We're still on the built in i-lambdalite database
4) [X] 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) [X] 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]
- [X] Add a postgresql docker image to our docker-compose file.
- [X] Configure radiance for postres.
- [X] Migrate all schema to new database.
** [X] Page Flow [2/2] ✅ COMPLETE
- [X] When a user logs in, their user profile page should become the
root node of the app in their view.
- [X] 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
- [X] Admin Dashboard [2/2]
- [X] System Status [4/4]
- [X] Server Status (Shows 🟢 Running)
- [X] Database Status (Shows connection status)
- [X] Liquidsoap Status (Checks Docker container)
- [X] Icecast Status (Checks Docker container)
- [X] Music Library Management [3/3]
- [X] Add Music Files (Upload and scan working)
- [X] Track Management (Pagination complete - 20 tracks per page, 4 pages total)
Pagination implemented with configurable items per page (10/20/50/100).
- [X] Player Control (Play/pause/stop working with HTML5 audio)
play/pause/edit &etc
- [X] User Management (Moved to separate /admin/users page)
- [X] Live Stream
- [X] Now Playing (Working correctly - displays artist and track)
- [X] Front Page [3/3]
- [X] Station Status (Shows live status, listeners, quality)
- [X] Live Stream (Green indicator, quality selector working)
- [X] Now Playing (Updates every 10s from Icecast, no HTML bugs)
- [X] Web Player [5/6] ⚠️ MOSTLY COMPLETE (Playlists limited by database)
- [X] Live Radio Stream (Working with quality selector)
- [X] Now Playing (Updates correctly from Icecast)
- [X] Personal Track Library (Pagination: 20 tracks/page, search working)
- [X] Audio Player (Full controls: play/pause/prev/next/shuffle/repeat/volume)
- [ ] Playlists (PARTIAL - Can create/view, but cannot save/load tracks - requires PostgreSQL)
- [X] Create empty playlists
- [X] 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)
- [X] Play Queue (Add tracks, clear queue - save as playlist blocked by database)