English | 한국어
A mobile-first prison poker roguelike built with React, TypeScript, PixiJS, and Vite.
You are an inmate fighting your way through a rigged prison hierarchy. Read your opponents, manage a single stack of coins, bend the rules with limited-use skills, and survive heads-up Texas Hold'em matches where bankruptcy means defeat.
The project began as a blackjack prototype. A few internal paths and class names still use
blackjack, but the current game is Texas Hold'em.
- Heads-up Texas Hold'em with preflop, flop, turn, river, folding, raising, showdowns, and split pots
- Eight story opponents with portraits, tells, traits, and match-specific house rules
- Poker AI influenced by hand strength, pot odds, board texture, aggression, bluffing, tilt, and composure
- Roguelike progression with rewards and a limited cheating-skill loadout
- Story and Endless modes
- A portrait 9:16 interface with pixel-art characters, prison backdrops, animated cards, and chips
- Web, Android (Capacitor), and Apps in Toss build targets
- Korean, English, Japanese, and Simplified Chinese UI
- React 18 and TypeScript
- Vite 6
- PixiJS 8
- Capacitor 8
- Apps in Toss Web Framework
- i18next
- Node.js 24 or later
- npm
Node.js 24 is required by the current Apps in Toss toolchain.
git clone https://github.com/rapina/dead-hand.git
cd dead-hand
npm ci
npm run devOpen the local URL printed by Vite.
npm run dev # Start the Vite development server
npm run build # Type-check and create a production web build
npm run preview # Preview the production build
npm run android:build # Build and sync an Android debug app
npm run android:install # Install the debug APK on a connected device
npm run android:release # Create a signed release AAB
npm run toss:dev # Start the Apps in Toss development server
npm run toss:build # Build the Toss AIT artifactAndroid release builds require a local android/keystore.properties file and keystore. Both are intentionally excluded from Git.
src/
game/blackjack/ Poker runtime and rules (legacy directory name)
components/ Game table, overlays, tutorials, and shared UI
screens/ Title, story, shop, codex, ranking, and cutscenes
assets/ Portraits, scenes, UI art, and store assets
ads/ Web, Toss, and AdMob adapters
iap/ Entitlements and platform purchase adapters
platform/ Platform-specific integrations
i18n/ Localized UI and dialog
android/ Capacitor Android project
scripts/ Asset generation and build helpers
GDD.md Canonical game design document
Choose a mode
-> meet an opponent
-> play a heads-up Hold'em match
-> bankrupt the opponent
-> choose a reward or skill
-> face the next prisoner
Coins are your stake and survival resource. Antes and bets move into the pot, and the winner takes it. A run ends when your stack reaches zero.
The repository does not include production credentials, signing keys, or local environment files.
- Copy credentials into local environment files only when needed.
- Keep
.env*, Android keystores,keystore.properties, and service-account files out of Git. - The asset-generation scripts read
GEMINI_API_KEYfrom the environment.
Issues and pull requests are welcome. Please run npm run build before submitting a change. Update GDD.md when changing game mechanics, balance, progression, or monetization behavior.
When working in the legacy src/game/blackjack/ directory, use poker terminology in new code and documentation.
No open-source license has been selected yet. The source is publicly available, but reuse and redistribution rights are not granted until a license is added.

