← Back

Blackjack Trainer

A complete product, shipped solo, with the depth a serious player needs. Proof I finish things — even on nights and weekends.

Built with AI assistance but the product is pure deterministic domain modelling — counting, EV math, spaced-repetition. The AI angle is the build process, not the product.

React 19 + Vite 6. Pure-function game engine with strategy.test.js invariants. 17 modes. All client-side; works offline.

Vite build, Vercel hosting, zero backend. State in localStorage. Static and cacheable — the kind of deploy that's impossible to break in production.

Deep domain modelling — Hi-Lo, KO, Omega II, Illustrious 18, rule variants, Wonging — shipped as a working tool for a specific advanced user.

Most blackjack tools are flashcards. This is a full simulator with the rules a counter actually cares about — H17/S17, DAS, RSA, surrender, deck penetration, bet spread — plus Wong-in/out and the Illustrious 18 deviations.

The engine is a pure-function module. No React imports. The UI is one consumer; the math is testable on its own.

Engine

src/engine/Eight pure-function modules. Zero React imports.

01
card.js
Card primitives
02
game.js
Game state machine — deal, hit, stand, double, split, surrender, insurance, resolve
03
strategy.js
Optimal-action lookup · invariant-tested
04
counting.js
Hi-Lo + KO + Omega II · true count · bet rec
05
probability.js
Odds and EV math
06
spacedRepetition.js
SRS for strategy drills
07
sessionHistory.js
Session tracking + CSV export
08
sound.js
Audio feedback
Modes
Free play · Strategy chart · Strategy drill (SRS) · Count practice · Counting tutorial · Counting panel · Shoe visualizer · Bet spread driller · Illustrious 18 · Gauntlet · Wonging · Multi-hand · Team play · Leaderboard · Education panel · Dashboard · Configurable rules.
Rules
Decks 1–8 · H17/S17 · DAS · RSA · Surrender · Configurable penetration · Min/max bet · Counting system · Hint visibility.
Stack

React 19 · Vite 6 · Pure CSS · Recharts · @vercel/analytics. State in localStorage. No backend. Works offline.

17 modes · 19 components · 9 engine modules · ~6.1k lines.

Previous
← TripOS