#Pintsize
Brendan Kidwell
25 August 2024
Pintsize is a tool for allowing IRC users to vote on what's playing on an IceCast livestream (an Internet radio station).
Functions:
- IRC bot sits in an IRC channel, announces music track changes, and accepts votes
- Web site:
- displays "now playing" on home page
- allows searching track play and vote history
- allows a sysadmin to edit IRC connection settings, response strings, etc.
Pintsize is shared publicly in an incomplete state. You may install it in a dev environment, but many functions are not complete yet.
The project is based on earlier work by Brendan Kidwell.
#Overall Development Progress
- Basic event pub/sub bus
- Web front-end:
- static text on home page (from Settings)
- search artists, tracks by keyword
- artist detail, with associated tracks
- track detail
- edit settings (for admin users)
- password reset via token (for admin users)
- change password (for admin users)
- CLI:
- list admin users
- create admin user
- reset admin user's password
- IRC:
- connect to IRC and sit in channel
- Stream info polling
- poll stream info URL every n seconds, publish internal Event when track changes
#Development Setup
#System Requirements
#Install Steps
- In MariaDB, create a user and a database called
pintsize
.
- Copy
./.env
to ./.env.local
.
- Fill in the correct values in
./.env.local
.
- Install dependencies:
#Running Pintsize
#Client-Side TypeScript Compiler
bun build-client-js # build once and exit
bun watch-client-js # build, watch and rebuild, and do not exit
#App Server (IRC bot, web server, stream info poller)
#Run Both Jobs in Parallel, with Watching
bun dev # requires Cygwin or Linux or MacOS