Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏒 Kadan Olympics

A tiny browser game for the ice hockey trip to Czech Republic. Everyone opens the same link on their phone and it works like a shared "Kadan Olympics" scoreboard: log points for mölkky, minigolf, swimming races, beer pong, shootout contests, karaoke — whatever the group gets up to — and watch a live leaderboard crown the trip champion.

No installs, no accounts. Just a link.

Features

  • Leaderboard — live-updating group ranking with medal counts (🥇🥈🥉)
  • Log a result — pick an activity, pick who took part, assign places (1st = 10pts, 2nd = 7pts, 3rd = 5pts, 4th = 3pts, took part = 1pt), or enter custom points for anything weirder
  • Feed — full history of everything logged, with delete/undo for mistakes
  • Players & Activities — add/remove people and activities on the fly
  • Works fully offline on a single device too (see "Local mode" below) if wifi at the bar is bad
  • You - Beer - Now

Quick start (local mode, zero setup)

Just open index.html in a browser, or serve the folder:

python3 -m http.server 8000

Without a Firebase config it runs in local mode: state is saved only in that browser's storage, so it's perfect for testing but won't sync between people's phones.

Enabling live sync across everyone's phones (recommended for the trip)

This uses Firebase Realtime Database, which has a generous free tier and needs no server of your own.

  1. Go to the Firebase console, create a new project (any name, e.g. czech-trip-2026). Google Analytics is not needed — you can decline it.
  2. In the project, go to Build → Realtime Database → Create Database. Pick a region close to Czech Republic (e.g. europe-west1). Start in test mode — that's fine for a private group app with a link only your friends know.
  3. Go to Project settings → General → Your apps, click the </> (web) icon, register an app (no hosting needed), and copy the firebaseConfig object it gives you.
  4. Paste those values into assets/firebase-config.js, replacing the REPLACE_ME placeholders.
  5. (Optional but recommended) In Realtime Database → Rules, set an expiry-free-but-scoped rule so it's not wide open to the entire internet forever, e.g.:
    {
      "rules": {
        ".read": true,
        ".write": true
      }
    }
    This is the default "test mode" rule — fine for a short trip. Firebase test-mode rules auto-expire after 30 days, so nothing lingers open afterwards. (The apiKey etc. in firebase-config.js is meant to be public for client apps like this — access control comes from these rules, not from hiding the config.)
  6. Commit and push assets/firebase-config.js with your real values.

Deploying so everyone can open one link

Easiest option: GitHub Pages. This is a repo-owner-only setting, so it has to be done by hand in the GitHub UI — no CLI/API shortcut for it here:

  1. Push this repo to GitHub (already done if you're reading this from the repo).
  2. Go to Settings → Pages on the repo.
  3. Under Build and deployment → Source, pick Deploy from a branch, then choose the branch this app lives on (e.g. claude/ice-hockey-trip-game-52px4i, or main once it's merged there) and folder / (root). Save.
  4. GitHub gives you a URL like https://<you>.github.io/magickadan/ — send that to the group chat.

How scoring works

Pick a place for each player in a logged result:

Place Points
🥇 1st 10
🥈 2nd 7
🥉 3rd 5
4th 3
Took part 1
Custom anything you type — for jokes, dares, best goal celebration, etc.

Preloaded activities: Mölkky, Minigolf, Swimming race, Shootout contest, Beer pong, Flip cup, Darts, Pub quiz, Karaoke — add more from the Activities tab any time (e.g. "Hockey game MVP", "First round bought").

Tech notes

Plain HTML/CSS/JS, no build step, no framework. Firebase is loaded via CDN <script> tags in compat mode so there's nothing to npm install. State falls back to localStorage automatically if Firebase isn't configured or fails to connect, so the app never hard-fails without wifi.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages