πŸ“Š Statistics & your data

What the trainer records about your darts, where that record lives, and the rules it follows.
← back to install & setup

First things first: you can opt out β€” here's how, and why we hope you don't

Opting out is one line. Comment out DT_CENTRAL_URL in /etc/dart-trainer/config.env and restart:

sudo nano /etc/dart-trainer/config.env      # put a # in front of DT_CENTRAL_URL
sudo systemctl restart dart-trainer

Your rig then runs fully local: nothing leaves your Pi, and every game, score and statistic keeps working β€” the trainer is built local-first, so you lose no functionality on your own board.

Why we hope you stay in β€” three things only the central copy can do:

New rigs start quarantined: their uploads are stored but excluded from model training and capped, until the rig is explicitly trusted by the admin. See the install page for the full β€œwhat your rig sends home” table.

Every dart, with its story

Since trainer 0.3.83, a throw isn't just a score β€” it is recorded together with the situation it was thrown into:

recordedexample
Where it landedexact board position in millimetres, plus the score (T20, D16, MISS…)
What you were aiming atin 501 the trainer knows from the game state: 32 left means this dart was thrown at D16; 170 left means T20. Every target game records its target per dart too.
What happenedbust, checkout, leg won, round halved (Bermuda), dart into a dead visit…
Whenthe true throw time β€” so session fatigue and pace can be measured later
Nothing is lost β€” by design. Undo marks a dart as voided instead of erasing it, a bust is recorded as a bust (it's a statistic, not noise), and an abandoned game keeps its throws. Corrections refine the record; they never destroy the original.

Local-first: your Pi owns your record

The source of truth for your statistics is a database on your own rig: /var/lib/dart-trainer/stats.db. It is written on every dart, works with no internet at all, and stays yours β€” if you opt out of the central service entirely (see below), you keep collecting and (as the stats screens land) viewing your full statistics locally.

What you get

Player ID (optional)

You can claim a player ID on the tablet: 12 words, shown once, written on paper. They derive a cryptographic keypair (a Nostr-format npub β€” a pseudonymous public key). What it does today: enter your words on any rig and your complete statistics history is restored from the central backup, self-service β€” the recovery path for a dead SD card. What central stores: only the binding between your npub and your player name; the secret never leaves your rig. Strictly opt-in β€” everything works without one. The tablet can also show your words as a QR code (to save or share) and scan one back to sign in on a friend's board β€” the photo is decoded on the board itself and never stored. Lost your words and your rig? The operator can re-bind your name to a fresh ID on request (that's the deliberate, friends-scale fallback).

Data protection notice

Last updated: 15 July 2026 Β· applies to the dart-trainer app and the dataset/leaderboard service at dart-room.com

Who is responsible

This is a private, invite-only, non-commercial hobby and research project, operated by z3n (dart-room.com). Contact for anything data-related, including all requests listed below: z3nlabs@proton.me. The operator's full identity is disclosed on request via that address.

What is processed, and why

datapurposekept
Throw data β€” board coordinates, scores, per-throw game context (targets, busts, checkouts), throw timestamps your statistics & leaderboards; training the open dart-detection model until the project ends or you request deletion
Camera images of the dartboard captured per throw (3 cameras) model training β€” this is the training data itself until the project ends or you request deletion
Player name β€” free-text, chosen by you attributing scores; shown on leaderboards with the throw data
Rig identifier & calibration β€” a per-device id and the solved camera geometry keeping every rig's data cleanly separate and re-scorable with the throw data
Rig telemetry β€” app version, camera health, error log lines, feedback you send (with a screenshot of the app only if you tick the box) diagnosing problems without anyone logging into your Pi until no longer needed for diagnostics
Web-server logs β€” IP address, time, requested URL operating and securing the service 14 days (rotated daily)

Legal basis, and how to say no

Practical privacy notes

Where the data lives, and who sees it

Your rights

Under the GDPR you can request, at any time: access to the data stored about you (Art. 15), rectification (Art. 16), erasure (Art. 17), restriction of processing (Art. 18), your data in a portable format (Art. 20), to object (Art. 21), and to withdraw consent with effect for the future (Art. 7(3)). Requests are handled free of charge and answered within one month at the latest (Art. 12) β€” in practice within days. (The GDPR's letter makes erasure conditional and lets manifestly excessive repeat requests be charged; neither matters here: because this project runs on your consent, withdrawing it obliges deletion β€” and beyond what the law requires, the operator's standing commitment is simpler: ask, and your rig's entire record is purged, no conditions.) One email to z3nlabs@proton.me (or a note via the in-app πŸ’¬ feedback button) is enough. You also have the right to complain to a data-protection supervisory authority.

← install & setup Β· dart-room.com Β· made for the crew 🎯