~bkidwell/pintsize

Vote on songs from a livestream in an IRC channel

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~bkidwell/pintsize
read/write
git@git.sr.ht:~bkidwell/pintsize

You can also use your local clone with git send-email.

#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

  1. In MariaDB, create a user and a database called pintsize.
  2. Copy ./.env to ./.env.local .
  3. Fill in the correct values in ./.env.local .
  4. Install dependencies:
bun install

#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)
bun server
#Run Both Jobs in Parallel, with Watching
bun dev # requires Cygwin or Linux or MacOS
Do not follow this link