NBA Feed
팀 뉴스와 경기 정보를 제공, 점수는 직접 확인할 때까지 숨겨져 있습니다
어떤 게임이든 플레이하고 모든 베팅을 정산합니다. 골프 사이드 게임인 Nassau·Skins·Wolf·Banker도 금액을 자동 계산해 드립니다
Play any game, settle every bet. Golf side games like Nassau, Skins, Wolf and Banker, with the money worked out for you.
스포츠·피트니스JavaScript · CSSGitHub @designertrevor온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Golf side-game scorekeeper for a group: Banker, Nassau, Skins and Wolf, with handicaps,
presses, a ledger that nets debts across rounds, and settle-up links.
Live: https://birdie-bank.vercel.app/ (auto-deploys from main). The original static
prototype is kept at /prototype.html.README 전문 보기 ↗Golf side-game scorekeeper for a group: Banker, Nassau, Skins and Wolf, with handicaps, presses, a ledger that nets debts across rounds, and settle-up links.
Live: https://birdie-bank.vercel.app/ (auto-deploys from main). The original static
prototype is kept at /prototype.html.
npm install
npm run dev # http://localhost:5173
npm test # game maths (node:test)
npm run e2e # start a round, score 18, settle up in Chrome (every PR and push to main on GitHub)
E2E_BUILD=1 npm run e2e # the same on the production build (before each ship)
npm run lint
npm run build
src/lib/golf.js: pure maths: WHS course handicap, stroke allocation (incl. plus
handicaps), Banker settlement, Nassau match play and presses, fewest-payments settle-up.src/lib/round.js: the round model (holes in play, strokes off the low player, nets,
results for each game). Everything shown is derived from saved scores.src/lib/store.js: app state in localStorage (one scorekeeper per phone).
Backup/restore lives in Settings.src/lib/ledger.js: outstanding debts netted across finished rounds and payments.src/data/courses.js: bundled scorecards with sources; verified: false ones show a
warning and can be corrected in-app (saved as the user's own copy).src/screens/*: History, Ledger, Players, Settings tabs; New round wizard; Play.public/sw.js + manifest.webmanifest: installable, works offline once loaded.src/lib/roadmap-public.js: the public roadmap (in the app, and at /roadmap for anyone),
made from ROADMAP.md at build time. Only games and features go out, as short titles.
node scripts/roadmap-public.mjs prints what's public and each item's id.Without keys the feature is hidden in production. In npm run dev it uses a local
stand-in, so two tabs can act as two phones: open the second one with ?profile=b.
The project is birdie-bank in Supabase (West US). Its URL and publishable key live in
.env.production, which Vercel builds with. To rebuild from scratch: create a project,
run supabase/schema.sql in the SQL Editor, and put the new URL and publishable key in
.env.production. To use the real server in npm run dev, copy them into .env.local.
Rounds are shared by a 6-letter code; anyone with the code can view and score it. There are no accounts yet.
Searching in the course picker also asks api/courses.js, a Vercel function that proxies
GolfCourseAPI with the server-side GOLFCOURSEAPI_KEY. Without that variable it answers
not_configured and the app shows only its own courses. A picked course is saved into
customCourses (with source: 'golfcourseapi'), so it syncs, works offline and can be
corrected like any course you added. npm run dev has no /api; put
VITE_COURSE_SAMPLES=1 in .env.local to search a few made-up courses instead.
GolfCourseAPI allows a fixed number of calls a day (35 on the free plan) and reports nothing about
how many are left, so the function counts each call in Supabase (supabase/2026-10-20-course-api-usage.sql)
and src/lib/course-quota.js emails FEEDBACK_EMAIL through Resend once a day at 80% of the
plan's calls, once when they run out, and the first time the API answers 429. Set
GOLFCOURSEAPI_DAILY_QUOTA in Vercel to the plan's limit after an upgrade (see
overnight/COURSE-QUOTA-WATCH.md).