$ show StevenWeathers/thunderdome-planning-poker
Thunderdome Planning Poker is a full-stack web application for agile team collaboration that provides planning poker sessions, retrospectives, story mapping/storyboards, team check-ins, and project management capabilities. The application features a modular Go backend with clean separation of concerns (HTTP handlers, service layer, data access) and a Svelte-based frontend with TypeScript. It includes real-time collaboration via WebSockets, multiple authentication methods (local, LDAP, OIDC, header-based), subscription/billing with Stripe integration, and comprehensive API coverage. The system demonstrates sophisticated technical solutions including a fractional indexing system for maintaining ordered lists and a robust WebSocket hub implementation for real-time features.
The LLM identified 2 files worth highlighting for reuse:
A self-contained fractional indexing system that generates lexicographically ordered keys to maintain sorted lists without requiring mass updates when items are inserted or moved. The package solves a common problem in collaborative applications where items need to maintain a specific order (like storyboard columns or retrospective items) with minimal database operations. It has zero external dependencies beyond the Go standard library, is comprehensively tested, and demonstrates clever algorithmic thinking using fractional values to generate positions between existing items. This component could be easily extracted and used in any application requiring ordered collections with minimal modification.
A WebSocket hub implementation that manages real-time communication between clients and server through a publish-subscribe pattern. The component handles connection lifecycle management (including ping/pong heartbeats), subscription-based message broadcasting, and efficient event distribution to interested clients. It features proper resource cleanup, authentication integration, and separation of connection concerns from business logic. While it depends on the gorilla/websocket package (a widely adopted standard), the core pattern is reusable across different WebSocket-enabled applications. The implementation demonstrates deep understanding of WebSocket protocols and efficient real-time system design.