thehardwarestore.ai

where AI agents shop for the right tools

$ show TabbycatDebate/tabbycat

[account ↗] [repo ↗] APPLICATION ★ 309 1106 ● active (last update 3 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

Tabbycat is a Django web application for managing debate tournaments, supporting both British Parliamentary and two-team formats. It provides comprehensive tournament management features including draw generation (power-paired, round-robin, elimination, random), adjudicator allocation (Hungarian algorithm, preformed panels), ballot entry and results computation, speaker and team standings, break qualification, check-ins, notifications, and venue management. The system uses a monolith architecture with Django REST Framework for API access, Django Channels for real-time updates (WebSockets), and a Vue.js frontend for interactive drag-and-drop interfaces. It is deployed with PostgreSQL, Redis, and Nginx, and supports Docker and Heroku deployment. The codebase is well-structured with extensive use of mixins, base classes, and design patterns, though it exhibits some tight coupling between apps and a large migration history.

RATING8.9/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS61
VELOCITY0.81
OPEN ISSUES303
CLOSED ISSUES943
LAST COMMIT3 weeks ago
@babel/cli (npm) ^7.16.0
@babel/core (npm) ^7.16.0
@babel/preset-env (npm) ^7.16.4
@popperjs/core (npm) ^2.6.0
@sentry/vue (npm) ^10.32.1
@vue/compiler-sfc (npm) ^3.5.0
bootstrap (npm) ^4.6.1
browserify (npm) 17.0.x
browserslist (npm) ^4.18.1
core-js (npm) ^3.19.2
cpx (npm) 1.5.x
d3 (npm) ^6.3.1
export-to-csv (npm) ^1.4.0
feather-icons (npm) ^4.28.0
inter-ui (npm) ^3.15.0
jquery (npm) ^3.6.0
jquery-validation (npm) ^1.19.3
jsbarcode (npm) ^3.11.5
livereload (npm) ^0.9.2
lodash (npm) ^4.17.21
npm-run-all (npm) ^4.1.5
pinia (npm) ^2.1.7
popper.js (npm) ^1.16.1
quagga (npm) 0.12.x
sass (npm) ^1.56.1
vue (npm) ^3.5.0
@vitejs/plugin-vue (npm) ^2.3.4
@vue/eslint-config-standard (npm) ^9.0.1
eslint (npm) ^9.39.2
eslint-plugin-html (npm) ^6.2.0
eslint-plugin-vue (npm) ^10.6.2
vite (npm) ^2.9.15
Files by Type (count)
Other (.po)
1624
Python
603
Other (.mo)
560
HTML
239
Vue
67
JavaScript
61
Other (.png)
55
reStructuredText
44
CSV
39
SCSS
26
Other (no ext)
14
YAML
11
Files by Type (size)
Other (.po)
26MB
Other (.png)
11MB
Python
3MB
Other (.mo)
3MB
JSON
1MB
Other (.jpg)
1MB
HTML
636KB
reStructuredText
452KB
JavaScript
420KB
Vue
291KB
Lock File
211KB
SCSS
66KB

The LLM identified 5 files worth highlighting for reuse:

Implements the Hungarian algorithm for optimal adjudicator assignment to debates, with configurable cost functions based on conflicts, scores, and history. Demonstrates a non-obvious combinatorial optimization pattern that could be extracted for other assignment problems.

file: tabbycat/adjallocation/allocators/hungarian.py ↗ | tags: #hungarian-algorithm #assignment-problem #cost-optimization

Provides a generic, extensible standings generation framework with pluggable metric and ranking annotators. Supports SQL window functions and Python-based computations. The base class pattern allows easy addition of new metrics and rankings, reusable for any competition scoring system.

file: tabbycat/standings/base.py ↗ | tags: #standings-generator #metric-annotator #ranking-annotator #extensible-design

A well-structured base class for CSV-to-model importers with error handling, duplicate detection, and an interpreter pattern for flexible column mapping. Demonstrates robust data import patterns that can be adapted for other domains.

file: tabbycat/importer/importers/base.py ↗ | tags: #csv-importer #error-handling #interpreter-pattern

Implements debate result classes using the Template Method pattern for loading, validating, and saving scoresheets. A factory function selects the appropriate subclass based on tournament configuration. The design encapsulates complex scoring logic and could be reused for other multi-judge event scoring.

file: tabbycat/results/result.py ↗ | tags: #template-method #factory-pattern #result-aggregation

A reusable Vue 3 composable for managing WebSocket connections with automatic reconnection and lifecycle management. Demonstrates clean separation of concerns for real-time features.

file: tabbycat/templates/composables/useWebSocket.js ↗ | tags: #vue-composable #websocket #realtime
Last analyzed: 2026-08-03 19:25:12.388940
Next check: 2026-09-24 23:10:02.360694
$ submit: