尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A small website for an indoor golf league: snap the Trackman scorecard after each round, and the standings rank every player on their best y Stableford rounds out of the x played. The winter is split into three competitions (autumn, Christmas, spring), and each one starts from zero.
docs/, hosted free on GitHub Pages.Try it without any setup: open docs/index.html?demo (or https://<you>.github.io/<repo>/?demo once it's online). The demo uses made-up players and saves nothing.
Sign up at supabase.com and click New project. Pick a region near you (e.g. Europe West). Note the database password somewhere safe; you won't need it for this guide.
When the project is ready, open SQL Editor, paste the whole of supabase/schema.sql, and click Run. This creates the tables, the access rules and the three competitions:
| Competition | Dates | Rounds planned (x) | Best that count (y) |
|---|---|---|---|
| Haustmót 2026 | 1 Nov – 15 Dec | 6 | 4 |
| Jólamót 2026 | 16 Dec – 15 Jan | 4 | 3 |
| Vormót 2027 | 16 Jan – 30 Apr | 15 | 10 |
You can change these later on the page's League tab.
Then do the same with each file in supabase/migrations/, oldest first. They add the player register, league nights and attendance.
Open Table Editor → members and add one row for yourself: your email and name, with is_admin ticked. Everyone else you register from the site (League → Register a player) once you're signed in.
Open Project Settings → API (or Data API) and copy the Project URL and the anon / publishable key.
Fill in docs/config.js with the URL and key from step 1.4. (Both are meant to be public; the access rules protect the data.)
Create a repository on GitHub (e.g. innigolf) and push this folder to it:
git init && git add . && git commit -m "Trackman Winter League"
git branch -M main && git remote add origin https://github.com/<you>/innigolf.git && git push -u origin main
On GitHub, open Settings → Pages, set Source: Deploy from a branch, branch main, folder /docs, and save. After a minute the site is at https://<you>.github.io/innigolf/.
Players sign in with a link emailed to them (no passwords).
https://<you>.github.io/innigolf/) and add the same address under Redirect URLs.Supabase's built-in email sender only sends a few emails per hour. That's enough for a league, since people stay signed in on their phone. If it ever gets in the way, connect a free email service under Authentication → Emails → SMTP Settings (Resend and Brevo both have free plans).
Without this step everything works; players type the scores in by hand. With it, a player picks a photo of the scorecard and the table fills itself in for them to check.
Get an API key at console.anthropic.com (API Keys → Create Key) and add a little credit under Billing. A scorecard read costs a few US cents, so a winter of weekly rounds comes to a dollar or two. Set a monthly spend limit in the console if you like.
Install the Supabase command-line tool (on a Mac: brew install supabase/tap/supabase), then from this folder:
supabase login
supabase link --project-ref <your-project-ref>
supabase secrets set ANTHROPIC_API_KEY=<your-anthropic-key>
supabase functions deploy read-scorecard
The project ref is the abcdefghijkl part of your Supabase URL.
The function checks that the caller is signed in and on the members list before it reads anything, so strangers can't spend your API credit. It uses Claude Opus 5.5 with Anthropic's automatic fallback switched on: if a safety check ever declined a photo, the request is retried on another Claude model instead of failing. If you skip this step, set photoReading: false in docs/config.js to hide the photo box.
Organisers can send a reminder from the Næsti hringur page. Each player gets an email with two buttons, Ég mæti and Kemst ekki. Clicking one opens the site and records the answer without signing in. The links are signed and only answer for that player and that night. The answer is recorded by the page's script, so email scanners that open links don't answer for anyone.
Mail is sent through Brevo (free plan: 300 emails a day; no domain of your own needed):
BREVO_API_KEY: the key from step 2REMINDER_FROM_EMAIL: the verified sender address from step 1REMINDER_FROM_NAME (default "innigolf") and SITE_URL (default https://kreisinn.github.io/innigolf/)The functions are supabase/functions/send-reminders (organisers only) and supabase/functions/rsvp (deployed with JWT verification off, because players aren't signed in when they click). Deploy them with supabase functions deploy send-reminders and supabase functions deploy rsvp --no-verify-jwt.
The sign-in emails come from Supabase and are in English by default. To translate them, edit Authentication → Emails → Templates → Magic Link in Supabase.
KIDDIEIKA66), and their email if they should sign in to answer and add rounds. Tick Organiser for anyone who should manage players, nights and competitions.scorecards). Signed-in league members can open them from the Hringir tab (Skoða skorkort); nobody else can. Deleting a round deletes its photos. Rounds saved before 28 October 2026 have no photo.| Path | What it is |
|---|---|
docs/index.html | The website |
docs/standings.js | The ranking rules (best y of x, tie-breaks), scorecard-name matching and the next-event rule |
docs/config.js | Your Supabase URL and public key |
supabase/schema.sql | Tables, access rules and the three competitions |
supabase/migrations/ | Later database updates: the player register, league nights and attendance |
supabase/functions/read-scorecard/ | The Claude photo reader |
claude-artifact/ | The earlier claude.ai version, kept for reference |