Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

196 Commits

Folders and files

Repository files navigation

Poker Notes

An offline-first, mobile-friendly web app for tracking home poker games: players, buy-ins, cash-outs, adjustments, settle-up transfers, and game history — plus a built-in Texas Hold'em odds calculator.

Features

  • Track a game's players, buy-ins, and cash-out (out) values.
  • Record adjustments and settle-up transfers between players.
  • Chronological history per game.
  • Works offline and syncs when back online.
  • No login: games are shared via a PIN code instead of accounts.
  • Texas Hold'em odds calculator.
  • Localized UI (Polish default, English available).

Tech stack

  • Meteor 3 for the backend/build, with Vue 3 as the SPA frontend, bundled by Vite via jorgenvatle:vite.
  • PrimeVue (unstyled "Volt" components in src/volt/) styled with Tailwind CSS.
  • jam:method for mutations and jam:offline for offline-first writes/sync.
  • vue-i18n for translations (en/pl catalogs in imports/lang/).
  • vue-meteor-tracker for reactive subscriptions in components.

How access works

There's no login UI. Each browser generates a creatorId (stored in localStorage) that owns the games it creates. To let someone else into a game, share its PIN code — entering it adds the game to that browser's local accessToGameIds list. The games publication returns games matching either the creatorId or the accessToGameIds.

Getting started

Prerequisites

Run locally

meteor npm install   # installs deps, runs patch-package via postinstall
meteor                # or: npm start

Open http://localhost:3000.

Scripts

  • npm run type-check / npm run type-check:watch — type-check with vue-tsc (the bundler does not check types itself).
  • npm run format / npm run format:check — Prettier write/verify.
  • npm test — run the Mocha suite once. npm run test-app runs it in watch mode. Filter tests with MOCHA_GREP="pattern" npm test.
  • npm run build then npm run prod — production build and run.

Production build

You need MongoDB running locally (or point MONGO_URL elsewhere):

# macOS, via Homebrew
brew tap mongodb/brew
brew install mongodb-community
brew services start mongodb-community
npm run build   # builds to ./build/bundle/ (installs server deps)
npm run prod    # runs the built app

Configure via .env.local:

  • MONGO_URL — MongoDB connection string (default: mongodb://localhost:27017/poker-notes)
  • ROOT_URL — the app's public URL (default: http://localhost:3000)
  • PORT — port to run on (default: 3000)
  • NODE_ENV — Node environment (default: production)

compose.yaml in this repo defines a Docker Compose setup (app + a pinned mongo:8.0 container) used for a real deployment behind a reverse proxy — it's not required for local development.

Project structure

  • imports/api/ — Meteor data layer: collections/ (Mongo collections), methods/ (jam:method mutations — all writes go through these), publications/ (games, game).
  • imports/ui/ — the Vue SPA: router.ts (routes), App.vue (root, holds the top-level games subscription), views/ (list, details, new game, odds), volt-based components elsewhere.
  • src/volt/ — unstyled PrimeVue components wrapped and styled with Tailwind, imported via the @volt/* alias.
  • imports/workers/oddsWorker.ts — runs poker-odds-calc in a Web Worker for the odds calculator.
  • imports/lang/ — en.yml / pl.yml i18n catalogs.

Contributing

See CLAUDE.md for conventions (path aliases, Prettier config, TypeScript strictness) and .claude/docs/offline-first-methods.md for the offline-first method mechanics and gotchas.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages