Back to DevLog

Polishing Cardizzle: Bet Limits, UI Tweaks, and Better Game Flow

3 min read

Had a productive session today working on Cardizzle, my casino platform that's been coming together nicely. Today was all about the details that make games feel professional - enforcing limits, polishing UI, and fixing those little navigation quirks that bug you.

Betting Limits Everywhere

One of the bigger tasks was implementing proper bet and buy-in limits across all four games (poker, roulette, blackjack, and plinko). I went with a pragmatic approach - instead of adding new database columns, I derived the buy-in limits from the existing bet limits:

  • Minimum buy-in = minimum bet × 10
  • Maximum buy-in = maximum bet × 1,000

This keeps things simple and avoids a database migration while still giving sensible defaults. I also added those handy Min/Half/Max quick buttons to all the buy-in and rebuy modals because nobody likes typing numbers when they're gambling.

The really satisfying part was hard-stopping the max bet enforcement on the client side. Now the UI actually clamps inputs, filters out chips you can't afford, and disables buttons that would let you bet more than allowed. No more confusion about why your bet didn't go through.

UI Polish That Actually Matters

Some of the smaller changes ended up having a big impact:

  • Chat message toasts now show at player seats instead of floating randomly. Had to thread this through the PokerTable→PlayerSeat component chain but it feels way more natural now.
  • Fixed hand history card display by adding a proper xs size to the CardDisplay component instead of fighting with CSS overrides.
  • Moved Plinko's leave button to the top ribbon where it belongs.
  • Added a 2-second delay to Plinko results so you can actually watch your balls land before seeing if you won. Small thing but makes the game feel less rushed.

Navigation That Makes Sense

Fixed one of those "death by a thousand cuts" issues where leaving tables would sometimes keep you on the page or send you to weird screens. Now all games properly navigate back to the home screen when you leave. Simple fix but removes friction.

Also did some poker-specific tweaks - moved the "Your Turn" label to the left, made chips 25% bigger (they were too tiny), and repositioned some elements that felt cramped.

The Technical Bits

Under the hood, I added a getPlayerChips() method to all the room managers for calculating rebuy caps, and implemented a resultsReady state system in Plinko that filters the live drops feed during ball animations. Nothing groundbreaking but solid foundation work.

All changes are in one clean commit and the build is passing. Next up is end-to-end testing across all games to make sure the limits work properly in multiplayer scenarios. The platform is starting to feel really solid - those little polish touches make such a difference in how professional a game feels.

Still considering whether to add database columns for per-table buy-in customization down the road, but for now the derived limits approach is working well.

Share this post