Private
Public Access
1
0
Files
disc-golf-tracker/README.md
T

3.0 KiB
Raw Blame History

Disc Golf Tracker

A private, on-device disc golf scorecard app. Log rounds, track your bag, and follow your progress over time — no account or server needed.

Live at dgt.hannu.be -> server is not on 247 but app does not need page reloads.


Features

Scoring

  • Log rounds hole by hole with / + controls
  • Scores default to par — tap through a hole without entering a number and par is recorded automatically
  • Birdie / Eagle / Par / Bogey labels appear in real time (no aces yet!)
  • Running total vs. par shown throughout the round
  • Auto-save on every tap — leave mid-round and resume from the Home screen

Courses

  • Add courses with custom hole counts (9, 18, or 24) and per-hole par
  • Saved courses are reusable across rounds
  • Multiple players per round, roster remembered between sessions

Bag

  • Build a disc bag with name, type (Distance Driver, Fairway Driver, Midrange, Putter), and color
  • Tag which disc was thrown on each hole during play
  • Per-disc stats: throw count and average score vs. par

Stats & History

  • Leaderboard ranked by average score vs. par across all rounds
  • Per-player breakdown: eagles, birdies, pars, bogeys with a visual bar
  • Score trend chart across rounds (line chart per player)
  • Average score by course
  • Full scorecard for every finished round with disc usage overlay

Tech stack

No backend. All data is stored in the browser's localStorage — private to the device browser, no account required.

About localStorage

Persistence — survives page reloads and closing the browser. Unlike sessionStorage which clears when the tab closes, localStorage stays until explicitly deleted or the user clears browser data.

Scope — dgt.hannu.be can only read its own data. Another website cannot read dgt.hannu.be's data and vice versa. Completely isolated per origin.

Chrome/Edge: install the site as a PWA (Add to Home Screen / Install App). Installed PWAs are treated differently — the browser is less aggressive about clearing their storage.


Run locally

Requires Node.js 20+.

git clone https://git.hannu.be/dev-hannu/disc-golf-tracker.git
cd disc-golf-tracker
npm install
npm run build
npm run preview      # serves the built app at http://localhost:4173

npm run dev is only needed if you're actively editing the code (gives you hot reload).


Deploy

npm run build        # outputs to dist/

The dist/ folder is plain static files — drop it on any web server or static host (Caddy, Nginx, Netlify, Vercel, GitHub Pages, etc.).


Origin

The app was built as a Claude artifact and then deployed as a standalone site. The storage layer uses localStorage shim so it runs in any browser unchanged.