$ show akiver/cs-demo-manager
CS Demo Manager is a mature Electron + React desktop application for managing Counter-Strike 2 and CS:GO demo files. It provides a complete pipeline: downloading demos from Valve, Faceit, 5EPlay, and Renown; parsing them to extract all game events (kills, rounds, economy, grenades, positions, etc.) into a PostgreSQL database; viewing 2D match replays with heatmaps and timeline; generating highlight videos via HLAE/FFmpeg; and exporting statistics to XLSX/JSON. The architecture consists of three processes: an Electron main process for window lifecycle, a React renderer for the UI, and a background Node.js server daemon for demo analysis, video encoding, and scheduled tasks. The codebase is well-structured with strong separation of concerns, extensive type usage, custom error hierarchies, and a comprehensive test suite for core logic. It demonstrates high craftsmanship in generic UI components (virtualized table, heatmap, dialogs) and IPC patterns (typed WebSocket client with reply queue).
The LLM identified 4 files worth highlighting for reuse:
A fully-featured, reusable table component with virtualized rows, column sorting/resizing/visibility, row selection, keyboard navigation, and context menu integration. It encapsulates all table logic in a single component and exposes a clean API, making it extractable to any React project.
A typed WebSocket client that queues messages when disconnected, auto-reconnects, and supports request-response pattern using UUID-based reply handlers. It separates server push events from request-reply, and is usable in any Electron or browser app requiring reliable WebSocket communication.
A Windows-only N-API native addon that waits for a running process to exit and returns its exit code. It handles errors gracefully and is a small, isolated utility that can be reused in any Node.js project on Windows for process lifecycle management.
A simple, well-tested pure function that sorts video sequences by their start tick. It is entirely self-contained and can be extracted and reused in any project that needs to order timeline sequences.