BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
Weekend box cricket — live scores, scorecards and rankings
Translation pending
Sports & fitnessTypeScript · PLpgSQLGitHub @akngowdaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Weekend box cricket: a custom scoring engine, an admin area, a one-thumb
scoring pad, public scorecards and rankings, and printable reports.
The rules are the league's own — zones marked by cones, declared runs, impact
overs, dot-outs and last man. They live in src/engine/, which is a pure
function with no I/O, and are explained in plain language on the in-app rules
page. Every rule carries an ID in the code comments and test names, matching
the league's written specification.Read the full README ↗Weekend box cricket: a custom scoring engine, an admin area, a one-thumb scoring pad, public scorecards and rankings, and printable reports.
The rules are the league's own — zones marked by cones, declared runs, impact
overs, dot-outs and last man. They live in src/engine/, which is a pure
function with no I/O, and are explained in plain language on the in-app rules
page. Every rule carries an ID in the code comments and test names, matching
the league's written specification.
npm install
npm run dev # http://localhost:3000
| Command | What it does |
|---|---|
npm run dev | Dev server |
npm test | 121 tests: engine, database, and the admin → pad flow |
npm run typecheck | TypeScript, strict, no any |
npm run build | Production build (what Vercel runs) |
npm run build:check | Same build into .next-build, so it can run while dev is live |
npm run verify | Typecheck, tests, and build — what CI runs |
src/engine/ the scoring engine — pure, no I/O, no dates, no randomness
src/db/ database types and the row <-> engine mappers
supabase/ schema and row level security, verified against real Postgres
lib/ the local store, stats, rankings, shared UI
app/ the screens
The scoreboard is always derived by replaying the delivery log. No screen reads a stored total, and undo works by voiding a ball and replaying — which is why a rule change can be applied to a match already in progress.
Hosting, CI and CD are all free.
1. Push to GitHub
git remote add origin https://github.com/<you>/box-cricket.git
git branch -M main
git push -u origin main
2. Connect Vercel — vercel.com → Add New → Project → Import the repo. Framework is detected automatically; no environment variables are needed yet.
From then on: every push to main deploys to production, every branch and pull
request gets its own preview URL, and .github/workflows/ci.yml runs the
typecheck, the tests and a production build on each push.
3. Optional — set a repository variable SITE_URL to your deployed URL so
the daily keep-alive workflow pings the right host.
Any scorecard or series page can be saved as a PDF from the browser's print dialog. The print stylesheet swaps the floodlit dark theme for black on white and drops every button, so what prints is a report rather than a screenshot. No library, no server, no cost.
Today: localStorage on the device that scored the match. lib/store.ts is
shaped exactly like the Postgres tables in supabase/migrations/0001_init.sql,
so swapping it for the Supabase client is a one-file change. Until then two
phones will not see the same match, and admin sign-in records who you are
without checking a password.