FT Engine is a desktop scoring application for electronic referees and competitive events. It supports free and tournament workflows, BLE/USB clickers, live scoring, OBS overlays, YouTube replay, historical reports, and CSV/SRT/ZIP exports. The local application runs on Electron, TypeScript, SQLite, and a Python Platform Worker for device and window I/O.
- Free and tournament scoring modes with single or dual referees.
- BLE and USB clicker support with reconnect handling.
- Live score display, penalties, replay, media timelines, and OBS overlay.
- Historical reports and export to CSV, SRT, and ZIP.
- Chinese, English, and Japanese interface.
- Node.js 22 or newer.
- Python 3.12 or newer.
- Bluetooth hardware and USB drivers for physical-device development.
The Platform Worker has OS-native dependencies, so Windows and macOS must use separate virtual environments:
- Windows:
.venv-winwithrequirements-windows.txt. - macOS:
.venv-macwithrequirements-macos.txt. requirements.txtcontains only shared dependencies. Never copy a virtual environment between operating systems.
npm install
py -3.12 -m venv .venv-win
.\.venv-win\Scripts\Activate.ps1
python -m pip install -r requirements-windows.txt
npm run devnpm install
python3.12 -m venv .venv-mac
source .venv-mac/bin/activate
python -m pip install -r requirements-macos.txt
npm run devnpm run build:worker:mac and npm run build:worker:win create and use the matching virtual environment automatically.
The application stores local data in SQLite under Electron's user-data directory and does not require a local HTTP or WebSocket service.
npm test
npm run typecheck
npm run lint
npm run build
.venv-mac/bin/python -m unittest discover -s tests # macOS
# .\.venv-win\Scripts\python.exe -m unittest discover -s tests # Windowsnpm run build:worker
npm run build:unpack
npm run build:win
npm run build:macWindows packages use NSIS; macOS packages use DMG. The macOS build uses a Developer ID Application identity from the keychain when available. Without one, it produces an ad-hoc signed DMG for local testing; public distribution still requires Developer ID signing, notarization, and stapling.
- Target architecture
- Future goals
- Django user service
- Community product boundary
- Windows and macOS adaptation
Proprietary / Custom License (contact Freakthrow for licensing).