Poker without the casino. Texas Hold'em with friends or against AI. Play money only, no ads.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Free poker apps tend to look and feel like a scam: neon, leather textures, coin jingles, and more time spent closing offers than playing cards. Pip is the opposite — a flat, calm, black-first table where the poker is the whole product. Play money only, no pop-ups, no fake felt.
Play money only: balances are chips, never a currency. Chips cannot be bought and cannot be cashed out, and the Chip Shop only ever takes chips you won at the table.
Pip is free to play and the core game is free forever — the whole ladder, the Rail's cash games, the Daily, the Chip Shop, the freeroll, two drills, Level 1 of the lessons, every written guide, the odds calculator, and the read on every hand you play. None of it is ever metered.
There is also an optional membership (£5.99/mo or £49/yr) that adds more to play: every side table and member room, the games that aren't Hold'em, build-your-own-table, the rest of the drills and practice packs, Lessons with Webb from Level 2, a report on your own play across every hand, the session review, and spectating after you bust. It's a real fence and we'd rather call it one than pretend otherwise. One member game a day is free without joining: any one poker table on the side tables shelf. It is not pay-to-win. Nobody at a table sees another player's Roll, the only leaderboard is the Pip Rating (how well you decide, which nothing you can buy changes), and the membership changes nothing once the cards are dealt. Nothing you can buy changes a hand: not the cards, the odds, what you're shown, or a rebuy. See ROADMAP → How Pip pays for itself.
Checkout, billing and cancelling run through Stripe — see docs/stripe.md. Cancel any time from Settings → Membership.
pnpm install
pnpm dev # → http://localhost:3000
| Command | What it does |
|---|---|
pnpm dev | Dev server at localhost:3000 |
pnpm test | AVA suite (engine + game logic) |
pnpm test:all | The full gate: format, types, lint (Biome), AVA, knip, audit |
pnpm format | Biome — format + safe fixes |
pnpm build | Production build |
A change is done when pnpm test:all passes (and build for structural
work). The UI isn't unit-tested — verify it by running the app.
Three layers with hard boundaries (Next.js App Router, React 19, Tailwind v4, Zustand, Framer Motion):
src/lib/poker/. Pure, deterministic, React-free
Texas Hold'em: dealing, betting, side pots, hand evaluation, Monte-Carlo equity,
and the AI policy. Every rule lives here, and ships with tests.src/store/. game.ts runs the tournament over
time (turn pacing, AI timers, blind escalation, hand history, the economy);
profile.ts is the persisted player (versioned, with migrations).src/components/, src/app/.
Reads the stores; look & feel only.Full documentation lives in docs/:
| Doc | What's in it |
|---|---|
| architecture.md | Stack, layout, data flow, design decisions |
| poker-engine.md | The pure engine: rules, evaluation, equity, AI |
| game-flow.md | The tournament loop, economy, ranks, the freeroll, the Daily Deal |
| cast.md | The cast — Pip's troupe of opponents, career reads, table talk |
| venues.md | The venue ladder and venue art |
| awards.md | Collectible "special chips" — the set, triggers, visuals |
| shop.md | The Chip Shop & earned unlocks — style, never edge |
| membership.md | What is paid, what is free, and the rules that keep it honest |
| design.md | Theme tokens, typography, motion, sound |
| brand.md | The name, the voice (including the dry line), the anti-casino principles |
| development.md |
Agents working in this repo should start with CLAUDE.md /
AGENTS.md.
Each one is about a file in this repo, and links it:
pages.dev alias serves your whole site on a second host. Ours did,
for five weeks, with a correct canonical tag on every page./game out instructed nobody: Google indexed it anyway, wearing the home
page's title.src/lib/poker/handEval.ts has to absorb, each with the input that
produces it.No account needed, no cookies, no personal data. Your profile lives in your browser, and it never leaves your device unless you ask it to: there's an optional account purely for carrying your progress to another device, it's off unless you turn it on, and it stores your email and that same profile and nothing else. With an account you can also ask for two emails, a Daily reminder and a weekly summary; both are off until you turn them on, and every one has a one-click unsubscribe (docs/email.md).
The only things Pip records are anonymous, cookieless usage counts (via Umami) and a running total of hands played, which the game adds to every ten hands. No fingerprinting, no ad tech, nothing tied to you. The privacy page lists exactly what's counted and for how long. Because the whole app is open source, you can verify all of this in the code.
Contributions are welcome — and not only code. Playtesting and bug reports, design and
UX feedback, docs, and spreading the word all count. Start with
CONTRIBUTING.md, see what's next in ROADMAP.md, or pick
up a good first issue.
Pip is built by playpip, open source, and under
active development. It's a front-end app: everything runs in the browser and persists
locally, with one optional account for cross-device sync and no server in the game itself. The engine is deterministic
and fully unit-tested, so anyone can read exactly how a hand is dealt and shuffled —
provably fair by inspection, not by promise. The product docs in docs/
are the source of truth for everything from the brand to the
economy.
Openness is a deliberate foundation: now that Pip has things you can pay for — extra
rooms, formats and tools, never pay-to-win — and multiplayer, where the cards are
dealt by a server running this same engine, a public codebase is what keeps the anti-scam
promise honest. It does real work here:
anyone who suspects a member room deals differently can read
config/venues.ts and the engine beside it and find that it
does not. Contributions welcome.
Play money only, forever. Chips are never a currency: they cannot be bought, they cannot be cashed out, and the only shop takes chips you won at the table. The optional membership buys access to more of the game and never a chip, a card, or an edge in a hand.
Keywords: poker · texas hold'em · sit-and-go · tournament · play money · multiplayer · card game · next.js · react · typescript
| Setup, testing, conventions, gotchas |