Web application for managing tabletop RPG convention events, built for the Waikato Role-Playing Guild's "Convergence" event.
Live at: https://convergence.waikatorpg.co.nz
- Game submissions — GMs submit games with descriptions, player counts, content warnings, genres, and scheduling/equipment requirements
- Event management — organisers review submissions, configure rooms/tables/time slots, and manage the schedule
- Player preferences — players rate games using a dice-based preference system (D4–D20, higher = stronger preference)
- Party system — players can form parties to be allocated together
- Automatic allocation — an algorithm assigns players to sessions based on preferences, party membership, and constraints
- Check-in and D20 economy — day-of-event check-in tracking and a virtual currency system for preference boosts
- Backend: Python 3.13, Litestar, SQLAlchemy (async), PostgreSQL
- Frontend: Server-rendered JinjaX templates, HTMX, TailwindCSS v4 + DaisyUI v5
- Client-side: TypeScript bundled via Vite (TipTap rich text editor, SortableJS drag-and-drop)
- Package management: uv (Python), npm (Node)
- Database migrations: Alembic via Advanced Alchemy
This repository is licensed under the MIT License. The following assets are not covered by this license:
Copyright the Waikato Role-Playing Guild. All rights reserved.
convergence_games/app/static/favicon/— favicon assets- Embedded Convergence logo SVG in
convergence_games/app/templates/components/NavBar.html.jinja
Owned by their respective owners. All rights reserved.
convergence_games/app/static/icons/logos/— authentication provider logos (Discord, Google)convergence_games/app/static/images/sponsors/— sponsor logos
Distributed under their own open-source licenses.
htmx.js/htmx.min.js— htmx (BSD 2-Clause)_hyperscript.min.js— hyperscript (BSD 2-Clause)qrcode.min.js— QR code generatorpreload.js— htmx preload extensionpath-params.js— htmx path-params extension