Back to Home
Technical Overview

How DuelSync Works

A local-first tournament companion that stays close to KTS while publishing clean read-only snapshots for players.

01 — Product Shape

A companion for KTS

DuelSync does not replace Konami Tournament Software. KTS remains the official source of truth for every tournament it manages.

DuelSync runs beside KTS as a local desktop companion. The organizer workflow stays local-first, with KTS handling the official record and DuelSync providing a modern interface on top of it.

Public sharing is entirely opt-in. An organizer can run an entire event without ever publishing anything online.

02 — Desktop Architecture

Inside the desktop app

Tauri + React Admin UI

Native desktop shell

Local FastAPI Backend

Runs on the organizer's machine

SQLite Database

Stored in AppData

KTS .Tournament File Sync

Watched continuously

Tauri desktop shell

Provides the native window, file access, and packaging, without the overhead of bundling a browser.

React organizer interface

The admin UI is a React app rendered inside Tauri, designed for fast and easy tournament operations.

Local FastAPI backend

Handles application logic, KTS file parsing, and snapshot preparation. Runs entirely on the organizer's machine.

SQLite in AppData

Tournament state is persisted in a local SQLite database stored in the OS-specific AppData directory.
03 — Automatic KTS Sync

Following the live .Tournament file

At the start of an event, the organizer picks a KTS .Tournament file. DuelSync remembers that file per tournament : there is nothing to re-import round after round.

The local backend watches the file for changes. As KTS writes updated rounds, pairings, standings, or player data, DuelSync picks them up automatically. A manual Sync now action remains available as a fallback.

KTS stays authoritative. DuelSync never writes back into the KTS file, it only reads from it and presents the data in a more comfortable interface.

04 — Public Sharing

Read-only snapshots for players

DuelSync Desktop

Organizer triggers publish

Cloudflare Worker Snapshot API

Receives sanitized payload

Cloudflare KV / Snapshot Storage

Stores current snapshot

Cloudflare Pages Public Viewer

Read-only player page

Publishing is opt-in and explicit. When the organizer chooses to publish, the desktop backend sends a sanitized snapshot of the tournament to the snapshot API.

The public player page reads that snapshot. It is strictly read-only, no editing, no accounts, no comments. Unpublishing the tournament removes public access immediately.

The public payload is intentionally narrow: no internal database IDs, no COSSY IDs, no organizer-only fields. Only what a spectator needs to follow the event.

05 — Local-First Data

The source of truth lives on the organizer's machine

All core tournament data lives locally in SQLite, alongside the KTS file it mirrors. There is no cloud database holding the organizer's working state.

The public snapshot is a derived view, not the source of truth. Losing internet connectivity does not stop the event, the organizer keeps running rounds locally and can publish updates again whenever the connection returns.

06 — Backup & Restore

Move and recover tournaments

Export

Any tournament can be exported as a portable backup file containing the data DuelSync needs to reconstruct it.

Restore

Exported backups can be imported on another machine, useful for recovery, moving data, or handing an event over to another organizer.

Backups are completely separate from public publishing. Restoring a backup does not republish anything automatically.

07 — Privacy & Boundaries

What DuelSync deliberately does not do

No accounts, no logins

Neither organizers nor players need a DuelSync account. There is no identity system to compromise.

No public editing

The public viewer cannot mutate tournament data. It only reads the latest published snapshot.

No public COSSY IDs

Internal identifiers used by KTS or the local database are never exposed on the public page.

KTS stays authoritative

DuelSync never claims to be the official record. KTS remains the source of truth for the event.
08 — Tech Stack

What it's built with

Desktop

  • Tauri
  • React
  • Vite

Backend

  • FastAPI
  • SQLite

Public

  • Cloudflare Workers
  • Cloudflare Pages
  • Cloudflare KV

3D Website Hero

  • React Three Fiber
  • Three.js
  • GSAP ScrollTrigger
09 — Why This Architecture

The reasoning behind the choices

No Docker for organizers

Organizers shouldn't have to install or operate a container runtime just to run an event. Tauri ships as a native installer.

Offline-first by default

The organizer flow must keep working in convention halls with flaky Wi-Fi. Local SQLite + local backend make that possible.

No premature accounts

Authentication and account management are deferred until they actually solve a real problem for organizers.

Decoupled public viewer

The public side is intentionally separated from local data, so a public outage can never affect a live event.

Preserve KTS as the official tool

DuelSync wraps KTS rather than competing with it. The official file remains the canonical record.
10 — Roadmap

Where this is heading

More polished beta distribution

A smoother experience for new organizers joining the beta.

Improved public publishing controls

Finer-grained control over what gets published, and when.

Better installer & release process

A cleaner update path between desktop versions.

Organizer feedback loop

Lightweight ways for organizers to report issues and shape what comes next.

Possible future documentation

A dedicated docs surface as the feature set stabilizes.

Curious to try DuelSync?

DuelSync is in private beta. If you organize Yu-Gi-Oh! tournaments and want to take it for a spin, request access below.

DuelSync is an unofficial companion application and is not affiliated with or endorsed by Konami.