A multiplayer browser-based game built using htmx and Golang. Leveraging web sockets.
  • Go 88.4%
  • templ 6.6%
  • JavaScript 2.4%
  • HCL 1.4%
  • Nix 0.9%
  • Other 0.3%
Find a file
2026-01-11 15:57:46 +00:00
containers chore: update all deps 2025-10-25 22:40:09 +01:00
dashboards feat: small improvements 2026-01-11 15:57:46 +00:00
docker feat: small improvements 2026-01-11 15:57:46 +00:00
docs fix: Winner page styles 2025-11-16 18:04:06 +00:00
infra/tf feat: allow unix socket auth for postgres 2026-01-01 17:47:42 +00:00
internal feat: small improvements 2026-01-11 15:57:46 +00:00
nix feat: UI Improvements 2025-08-25 21:28:52 +01:00
static feat: small improvements 2026-01-11 15:57:46 +00:00
tests/e2e feat: small improvements 2026-01-11 15:57:46 +00:00
.air.toml fix: small ui bugs 2025-10-25 20:41:22 +01:00
.copier-answers.yml fix: JWKS Setup 2025-09-14 19:27:53 +01:00
.envrc chore: update lock again 2024-07-14 23:37:17 +01:00
.gitignore fix: small ui bugs 2025-10-25 20:41:22 +01:00
.gitlab-ci.yml feat: small improvements 2026-01-11 15:57:46 +00:00
.golangci.yml feat: Add separate migration job 2025-09-18 12:30:48 +01:00
.mockery.yaml feat: add crash recovery logic 2025-10-24 19:21:59 +01:00
.sqlfluff chore: update dependencies 2025-08-15 17:22:39 +01:00
default.nix fix(deps): update all non-major dependencies 2025-02-10 21:00:13 +00:00
docker-compose.yml feat: small improvements 2026-01-11 15:57:46 +00:00
flake.lock chore: update all deps 2025-10-25 22:40:09 +01:00
flake.nix chore: update all deps 2025-10-25 22:40:09 +01:00
go.mod chore: update all deps 2025-10-25 22:40:09 +01:00
go.sum fix: locale and remove xerrors 2025-10-23 21:27:59 +01:00
gomod2nix.toml fix: locale and remove xerrors 2025-10-23 21:27:59 +01:00
LICENSE feat: initial commit 2024-07-15 20:03:42 +01:00
main.go feat: allow unix socket auth for postgres 2026-01-01 17:47:42 +00:00
README.md fix: Winner page styles 2025-11-16 18:04:06 +00:00
renovate.json chore: update dependencies 2025-08-15 17:22:39 +01:00
shell.nix feat: small improvements 2026-01-11 15:57:46 +00:00
sqlc.yaml refactor: Big intefaces into smaller ones 2025-10-23 22:51:27 +01:00
tailwind.config.js feat: [sc-494] update names 2025-02-01 23:22:22 +00:00
Taskfile.yml feat: small improvements 2026-01-11 15:57:46 +00:00

Banter Bus

Banter Bus is a multiplayer web-based party game inspired by JackBox games. Players join lobbies to play social deduction and guessing games together in real-time.

Home Page

Table of Contents

Demo

Demo Video

Getting Started

# Clone the repository
git clone https://gitlab.com/hmajid2301/banterbus
cd banterbus

# Allow direnv to load the development environment
direnv allow

# Start the development server
task dev

The application will be available at http://localhost:7331 (proxy for templ -> :8080).

Preview Environments

When creating merge requests, you can deploy preview environments:

  1. Add the deploy/flux-preview label to your merge request
  2. CI will automatically build and deploy a preview environment
  3. Access your preview at https://mr-{MR_ID}.dev.banterbus.games
  4. Environment is automatically cleaned up when MR is merged/closed

Technology Stack

Backend

  • Go - Core application language
    • Standard library HTTP server
    • gobwas/ws for WebSocket communication
    • SQLC for type-safe database queries
  • PostgreSQL - Primary database for game state and user data
  • Redis - Pub/Sub messaging for real-time events between players
  • templ - Type-safe HTML templating

Frontend

  • HTMX - Dynamic HTML updates without JavaScript frameworks
  • Alpine.js - Minimal JavaScript for interactive components
  • Tailwind CSS - Utility-first styling

Development Experience

  • Nix - Reproducible development environments
    • gomod2nix for Go dependency management
    • Automated development shells
    • Pre-commit hooks for code quality
    • Docker image builds
  • Task - Simple task runner (alternative to Make)
  • Air - Live reload during development
  • SQLC - Generate type-safe Go code from SQL

Infrastructure & Deployment

  • Terraform - Infrastructure as code
    • Single state file with workspace separation (dev/prod)
    • Automated DNS management via Cloudflare
    • Secret management through OpenBao
  • Kubernetes - Container orchestration
    • GitOps deployment with Flux CD
    • Automatic scaling and health checks
  • GitLab CI/CD - Continuous integration and deployment
    • Automated testing (unit, integration, e2e)
    • Docker image builds and registry management
    • Preview Environments - Automatic deployment for merge requests
      • Temporary environments for testing features
      • Automatic cleanup when MR is closed
      • URL format: https://mr-{ID}.dev.banterbus.games

Monitoring & Observability

  • OpenTelemetry - Distributed tracing and metrics
  • Grafana - Metrics visualization and alerting
  • Prometheus - Metrics collection and storage
  • Loki - Log aggregation
  • Tempo - Distributed tracing backend