No description
  • Dart 96.4%
  • CMake 1.1%
  • Shell 0.9%
  • Python 0.8%
  • C++ 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Sebastian 5719173d59 Version 1.21.1+41
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-11 12:49:18 +02:00
android Ein Name und ein Zeichen: de.dompasero.turnierwart und das Hexagon 2026-08-23 22:03:20 +02:00
assets MTR und JAR liegen der App bei, ein Baufreigabeskript fasst den Releasebau zusammen 2026-09-08 14:53:57 +02:00
docs Review umsetzen: Bedienbarkeit, Leistung, Ladefehler 2026-09-26 15:47:20 +02:00
lib Sieger abgeschlossener Events auf der Uebersicht buendeln 2026-10-11 12:47:08 +02:00
linux Ein Name und ein Zeichen: de.dompasero.turnierwart und das Hexagon 2026-08-23 22:03:20 +02:00
test Sieger abgeschlossener Events auf der Uebersicht buendeln 2026-10-11 12:47:08 +02:00
tool LIESMICH.txt in den Quellbaum holen 2026-09-18 12:45:02 +02:00
.gitignore Turnierwart: Draft-Turnierleitung für Linux-Desktop 2026-08-23 09:57:50 +02:00
.metadata Android als zweite Plattform, Oberfläche für schmale Bildschirme 2026-08-23 10:53:16 +02:00
analysis_options.yaml Turnierwart: Draft-Turnierleitung für Linux-Desktop 2026-08-23 09:57:50 +02:00
CLAUDE.md Zeitstempel fuer die beiden Rhythmus-Pruefungen 2026-09-17 13:48:02 +02:00
Documentation.md Sieger abgeschlossener Events auf der Uebersicht buendeln 2026-10-11 12:47:08 +02:00
LIESMICH.txt Version 1.21.1+41 2026-10-11 12:49:18 +02:00
pubspec.lock Abhaengigkeiten pruefen und dbus auf ^0.8.0 anheben 2026-10-11 12:46:47 +02:00
pubspec.yaml Version 1.21.1+41 2026-10-11 12:49:18 +02:00
README.md Wurzeldokumente entdoppeln und ihre Rollen schaerfen 2026-09-18 13:07:00 +02:00

turnierwart

Leitet Magic-Draft-Events: Paarungen nach Schweizer System, K.O.-Baum und Tabelle nach den offiziellen Turnierregeln. Ausgelegt auf den klassischen Draft-Pod jeder Größe. Läuft auf dem Linux-Desktop und auf Android, alles liegt lokal — ohne Konto, ohne Cloud, ohne Netz.

Dokumentation

Datei Inhalt
docs/einstieg.md Ohne Vorwissen: Entstehung, Sprachwahl, jede Datei einzeln, Tests, erster eigener Lauf
docs/projekt.md Technisch: Schichten, Datenmodell, Zustandsfluss, Referenz, Entscheidungen
docs/regeln.md Die Turnierregeln, wie sie hier gerechnet werden — mit Zahlenbeispielen
docs/betrieb.md Der Turnierabend: anlegen, Uhr, melden, korrigieren, übergeben, sichern
docs/bauen.md Bauen und Ausliefern für Linux und Android, Versionierung, Klänge, Icons
docs/fehlerquellen.md Selbst prüfen: was hier schiefgehen kann und wie man einen Verdacht belegt

docs/ ist die ausführliche Fassung und für alles Ausgeschriebene führend. Daneben stehen drei Dateien mit je eigener Aufgabe: Documentation.md trägt die Entscheidungen mit ihrem Warum und den laufenden Arbeitsstand, CLAUDE.md nur Arbeitsanweisungen für die Arbeit am Repository, und LIESMICH.txt ist der Zettel, der mit jedem Paket ausgeliefert wird.

Was es kann

  • Vier Modi: reines Schweizer System, reines K.O., Schweizer Vorrunde mit anschließendem Top-Cut (der Normalfall beim Draft) und „jeder gegen jeden".
  • Paarung ohne Wiedersehen. In kleinen Feldern wird die optimale Paarung exakt berechnet, nicht geschätzt. Ist eine rematchfreie Runde möglich, findet die App sie; ist keine möglich, weist sie das aus, statt es zu verschweigen.
  • Tabelle nach den offiziellen Regeln (MTR 5.3): Matchpunkte, dann OMW%, GW% und OGW%, sichtbar in der Tabelle — bei Punktgleichstand ist genau das die Antwort auf „warum steht der vor mir?".
  • Ergebnisse in einem Klick. Fünf Knöpfe je Tisch: 2:0, 2:1, Remis, 1:2, 0:2. Eine Korrektur ist derselbe Handgriff wie die Erstmeldung.
  • Rundenuhr mit zwei akustischen Zurufen, die nach einem Neustart weiterläuft und mit der letzten Meldung der Runde von selbst anhält — dazu eine Pause zwischen den Runden, die von allein läuft.
  • Eine Vorrunde mehr, wenn die geplanten nicht reichen; Byes bei ungerader Teilnehmerzahl; Aussteigen mitten im Turnier, ohne dass die bisherigen Punkte verfallen.
  • Übergabe an ein anderes Gerät als Datei — der Draft beginnt am Rechner und geht am Telefon weiter, ohne dass jemand doppelt tippt.
  • Spielerstamm mit Bilanz und Erzfeind, Medaillenspiegel über alle abgeschlossenen Events, Historie und Export in drei Fassungen.
  • Spielformat als Etikett am Turnier — „Limited · Draft", „Constructed · Commander" —, jederzeit änderbar, auch nachträglich.
  • Regeln an Bord: die offiziellen Dokumente (MTR, JAR, Regelwerk) verlinkt und die App selbst erklärt — nachgeschlagen wird zwischen zwei Runden.

Ein Abend in acht Schritten

Neues Event  →  Modus und Teilnehmer wählen  →  Turnier starten
     →  Uhr starten  →  Ergebnisse melden  →  Nächste Runde auslosen
     →  Top-Cut auslosen  →  Turnier abschließen  →  Export

Ausführlich in docs/betrieb.md.

Technik

Flutter für Linux-Desktop und Android, Riverpod für den Zustand, Drift/SQLite für die lokale Datenbank. Material 3, hell und dunkel nach Systemeinstellung. Die Datenbank liegt unter ~/Dokumente/turnierwart.sqlite.

lib/
  core/       Regelkern ohne I/O, Datenbank, Austauschformat, Modelle, Theme
  features/   Events, Runden, Tabelle, Spieler, Medaillen, Formate, Export,
              Einstellungen
tool/         Erzeugt Icons und Klänge
docs/         Diese Dokumentation

Tabelle und Baum werden nie gespeichert, immer gerechnet. Es gibt genau eine Wahrheit — die gemeldeten Ergebnisse. Eine Korrektur wirkt sich damit sofort überall aus. Wie im Einzelnen gerechnet wird, steht in docs/regeln.md, der Aufbau dahinter in docs/projekt.md.

Bauen und starten

flutter test
flutter build linux --release
./build/linux/x64/release/bundle/turnierwart

Aus einer Flatpak-Umgebung heraus (etwa VSCodium) fehlt clang; Release-Builds laufen deshalb über den Host, Android braucht JDK 21 und --target-platform android-arm64. Der ganze Ablauf samt tool/release.sh steht in docs/bauen.md.

Grenzen

  • Keine Obergrenze für das Feld. Das Schweizer System paart bis 14 Spieler exakt und darüber nach einem Näherungsverfahren, „jeder gegen jeden" rotiert über beliebig viele, und der Baum füllt die nächstgrößere Zweierpotenz.
  • Ein Gerät führt. Die Übergabe ist keine Synchronisierung; wer abgegeben hat, sieht nur noch zu.
  • Kein Mehrbenutzerbetrieb, keine Anmeldung, kein Server. Die Datenbank ist eine Datei auf dem Gerät.
  • Best-of-3. Andere Matchformate kennt die Ergebniseingabe nicht.
  • Android-APK nur für arm64 — kein 32-Bit-Telefon, kein Emulator.