How many times have you thought "Man there's nothing to watch"? But then you actually have hundreds of movies at your disposal and you're simply overwhelmed by choices and your friends can't actually decide on what to watch so you just end up scrolling Jellyfin and arguing?
Ok maybe this is a specific me problem, but if it's not, that's why I made this site, hopefully to make the process of picking a movie more fun, as of now it's a basic voting system with lobbies. But if I'm feeling ambitious I'd like to make this jackbox style one day.
The voting system is influenced by the young CGP Grey. Everyone Should Vote More Than Once
- task
- go
- air
- templ
- tailwindcss - Download from Releases
Must have a Jellyfin server with API key in your .env for this to run properly. For a fun message that plays before the end of the game, you can include an OPENAI_API_KEY, it only uses one small token request at the end of each game. 100 games has cost me ~ $0.01. If you don't define OPENAI_API_KEY that's ok, the app will still run just fine.
JELLYFIN_API_KEY
JELLYFIN_BASE_URL
OPENAI_API_KEY
PORT (to run the app on)
LOG_LEVEL (DEBUG | INFO | WARN | ERROR)
I have some of the api endpoints saved in the _bruno folder install bruno if you want to use these endpoints. Make sure to copy your .env file in the root of the _bruno directory so the endpoints can use the environment variables in their requests. Jellyfin requires an API key in each of it's requests. here's some info on how to store bruno secrets.
I have this project split into distinct layers to keep things organized.
- web/features: Handle HTTP Requests, perform handler operations for rendering pages, similar setup to Northstar
- web/views: Just for common templ files / or pages
- pkg/: Handle all of the business logic. Grab data from external services with providers (i.e. Jellyfin/openAi)
- db: Handles the CRUD operations directly on the database. Migrations, sqlc, etc.
Right now I have basic clickthrough testing setup using playwright, npm test or npm run test:ui for detailed results
Testing is put in place on push to prevent regression, if your git client is giving you an error, try running npm test to see more
detailed errors.
