2026-09-08 21:25:08 +02:00
2026-05-18 16:35:00 +00:00
2026-05-18 16:35:00 +00:00
2026-05-18 19:06:52 +02:00
2026-05-18 19:06:52 +02:00
2026-05-18 16:35:00 +00:00
2026-05-18 16:35:00 +00:00
2026-05-18 16:35:00 +00:00
2026-09-08 19:15:05 +02:00

Court Pilot

Court Pilot is a local-first web and desktop application for managing badminton court officials, waiting rotations, and court assignments. It supports optional service judges and an English/Hungarian interface.

Current stack

  • Angular 22 and Ionic Angular 9
  • Dexie / IndexedDB local persistence
  • Angular CDK drag and drop
  • Tauri 2 desktop application
  • Jasmine and Karma tests

Main workflows

The application has three routes:

  • Pilot — assign officials to courts and manage waiting rotations
  • Court Officials — maintain the official roster
  • Settings — configure court count, service judges, confirmation alerts, and language

Application data is stored locally in the browser/webview through IndexedDB. No server-side API is currently present in this repository.

Prerequisites

For web development:

  • NVM with the Node.js lts/jod release (Node.js 22)
  • npm
  • Ionic CLI available on the command line

For desktop development, also install:

  • Rust stable; the crate declares a minimum Rust version of 1.77.2
  • The platform prerequisites required by Tauri 2

Install

These commands target Bash (Linux, macOS, or Windows WSL). From fish, start bash first. Follow the shell and NVM setup before continuing. If Bash NVM is missing, agents must ask permission before installing it. .nvmrc declares lts/jod:

export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
. "$NVM_DIR/nvm.sh"
nvm install lts/jod
nvm use lts/jod && npm ci

Each npm command block loads Bash NVM explicitly and selects the required Node version, including in fresh noninteractive shells.

If Ionic CLI is not already installed:

export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
. "$NVM_DIR/nvm.sh"
nvm use lts/jod && npm install --global @ionic/cli

Web development

export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
. "$NVM_DIR/nvm.sh"
nvm use lts/jod && npm start

Build the Angular application:

export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
. "$NVM_DIR/nvm.sh"
nvm use lts/jod && npm run build

Run linting and tests:

export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
. "$NVM_DIR/nvm.sh"
nvm use lts/jod && npm run lint
nvm use lts/jod && npm test

npm test starts Karma in its configured mode and may remain open in watch mode.

Code formatting

Use the Prettier plugin in your editor to format files you change. The repository already provides .prettierrc at its root, and compatible editor plugins discover it automatically. Use the project configuration rather than personal Prettier overrides, and avoid reformatting unrelated files.

For VS Code, the recommended extension is esbenp.prettier-vscode. Use Format Document or enable format-on-save after selecting Prettier as the formatter.

Desktop development

The Tauri CLI is available through:

export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
. "$NVM_DIR/nvm.sh"
nvm use lts/jod && npm run tauri -- <command>

For example:

export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
. "$NVM_DIR/nvm.sh"
nvm use lts/jod && npm run tauri -- dev
nvm use lts/jod && npm run tauri -- build

Tauri development intentionally uses http://localhost:8103. The current npm start script does not explicitly select that port, so verify that Ionic is listening on 8103 when using tauri dev.

Persistence

The database is declared in db.ts and currently uses Dexie schema version 1. Data includes:

  • court officials
  • active umpire assignments
  • active service-judge assignments
  • umpire and service-judge waiting queues
  • application settings

Released schema changes must use a new Dexie version and an explicit migration strategy.

Localization

Translations are defined in src/app/i18n/translations.ts. English (en) and Hungarian (hu) are currently supported. Add new user-facing keys to both languages.

Desktop releases

Pushing a tag matching v* triggers .github/workflows/release.yml. The workflow:

  1. Creates a CrabNebula draft release.
  2. Builds and uploads Windows packages.
  3. Builds and uploads Apple Silicon and Intel macOS packages.
  4. Builds and publishes a Linux Snap.
  5. Publishes the CrabNebula release.

The workflow requires repository secrets for CrabNebula, Tauri signing, and Snap publication. Linux updates are managed by Snap; Windows and macOS use the Tauri updater configured in src-tauri/tauri.conf.json.

Supported platforms

Browser/web, Windows, macOS, and Linux Snap are supported. Android and iOS are not supported or planned at this stage, although Capacitor configuration remains for possible future use.

Project documentation

  • AGENTS.md — instructions for coding agents
  • docs/architecture.md — current technical structure and data flow
  • docs/domain-glossary.md — confirmed terminology and business rules
  • docs/development.md — local setup, development workflows, and manual versioning
  • docs/testing.md — test and validation guidance

License

MIT — see LICENSE.

S
Description
No description provided
Readme MIT
3.4 MiB
0 Stars 1 Watchers 0 Forks
1.0.0
Latest
2026-08-29 14:38:56 +02:00
Languages
TypeScript 80.5%
HTML 14.3%
SCSS 2.4%
JavaScript 2.1%
Rust 0.7%