← All projects
Fintech & iGaming

Cassino Games

Six provably-fair games, one platform — every result auditable, every cent on a ledger that never adds up wrong.

The studio’s family of technical demos: six complete games live, on play credits — no real money, no deposits, no prizes. 18+.

Six full demos live

6
complete games live
SHA-256
cryptographic commitment per round
96–99%
published RTP per game
100+
automated tests across the family

The problem

In any product that moves money — betting, wallets, credits — the questions are the same: how do you prove the system doesn’t cheat, how do you guarantee the balance is never wrong, and how do you launch the next product without rebuilding everything from scratch?

The solution

By answering once, in the foundation: the server commits to the seed before any bet (published SHA-256 hash) and every result is derived by verifiable HMAC; the balance is the sum of an append-only ledger, enforced by atomic Postgres functions. On that base — Nuxt 3, Express, Supabase, Cloud Run — came DiceBet, then CrashFly, MineFly, LuckyTiger, PlinkoFly and RoletaFly, each proving a new capability of the same platform.

The games

Click any screen to enlarge.

European roulette — 37 pockets, a single zero — played through a composite bet slip: the chips spread across the layout (12 bet types, plus announced bets like Voisins, Tiers and Orphelins and the neighbours of any number) settle in one transaction against the drawn pocket, and a single invalid leg voids the whole bet without debiting a cent. The draw discards the 32-bit words that would skew the remainder, so every pocket comes up exactly uniform, and the RTP is the same 97.2973% for every kind of bet.

The win: the ball stopped in pocket 3 and the ten-leg slip paid R$ 130.00 on a R$ 60.00 stake
The win: the ball stopped in pocket 3 and the ten-leg slip paid R$ 130.00 on a R$ 60.00 stake
The history opens the spin’s ten legs: the 0-2-3 trio paid 12×, the 1-18 half paid 2× and the rest lost — all settled against the same pocket
The history opens the spin’s ten legs: the 0-2-3 trio paid 12×, the 1-18 half paid 2× and the rest lost — all settled against the same pocket

A real-time multiplayer crash game: every player watches the same plane climb in a single authoritative loop over WebSockets, and auto-cashout fires server-side at the exact multiplier. Crash points come from bustabit’s 52-bit formula, on a pre-committed SHA-256 hash chain verifiable in the browser, with a published 99% RTP.

CrashFly in flight, with live bets and the round history — the win: auto-cashout at 1.20× paying R$ 31.20
CrashFly in flight, with live bets and the round history — the win: auto-cashout at 1.20× paying R$ 31.20
Verifiable fair play: the public commitment and hash-chain verification in the browser
Verifiable fair play: the public commitment and hash-chain verification in the browser

A 5×5 mines game whose entire state lives in Postgres behind atomic row-locked functions — not even the system’s owner can read where a live game’s mines are. Exact BigInt combinatorial multipliers, 97% RTP, an in-browser fairness verifier, a leaderboard and an installable PWA.

MineFly mid-game: two tiles revealed and cash-out available at 1.26×
MineFly mid-game: two tiles revealed and cash-out available at 1.26×
The win: mines and gems revealed after cashing out at 1.68×
The win: mines and gems revealed after cashing out at 1.68×

A five-line 3×3 slot with multiplier wilds and a 10-free-spin bonus — all resolved in a single atomic request, each derived value scoped by its own labeled HMAC. The ~96% RTP is calibrated by Monte Carlo simulation (millions of spins), and the reels ride one continuous velocity curve stitched across three CSS animations.

LuckyTiger: the reels in motion mid-spin — with the server seed hash in the footer
LuckyTiger: the reels in motion mid-spin — with the server seed hash in the footer
The tiger wild on screen in a line win
The tiger wild on screen in a line win

A 12-row plinko with three risk profiles, where every bounce comes from its own labeled HMAC — twelve per ball — and those same bits reproduce both the final slot and the whole trajectory. That is why the fall is animated from deterministic keyframes, with no physics engine: a numerical simulator could drift away from the result already drawn. Up to five balls fall at once, each an independent bet, and the three RTPs (97.06%, 97.04% and 97.17%) are locked by a test that recomputes the tables exactly.

Five balls falling at once on high risk, with the 105× buckets at the edges and the 97.17% RTP disclosed below the board
Five balls falling at once on high risk, with the 105× buckets at the edges and the 97.17% RTP disclosed below the board
The history showing the commit-and-reveal cycle: recent bets with the server seed still unrevealed, older ones with the seed already open for checking
The history showing the commit-and-reveal cycle: recent bets with the server seed still unrevealed, older ones with the seed already open for checking

The game that founded the platform: dice betting where the server publishes the seed hash before the round, each roll is HMAC-SHA256(seed, clientSeed:nonce) and a transparency page redoes the math with Web Crypto in the browser. Stripe test-mode deposits with idempotent crediting, and the same Nuxt build ships as a website and an Android app via Capacitor.

DiceBet: the bet, with win chance and payout computed live — and the 18.34 roll paying out the win
DiceBet: the bet, with win chance and payout computed live — and the 18.34 roll paying out the win
Transparency page: seed commitment, verification and revealed seeds
Transparency page: seed commitment, verification and revealed seeds

Commercial highlights

Provably fair by construction

Cryptographic commitment before the bet, results via HMAC-SHA256, seed revealed on rotation — and in-browser verifiers that redo the math with Web Crypto, trusting no server.

Money under server authority

An integer-cents wallet, append-only transactions with the invariant balance = sum(transactions), row locking and atomic database functions. The client never decides what it won.

One foundation, six games

The same stack — Nuxt 3, Express, Supabase, Cloud Run — carries dice, crash, mines, slots, plinko and roulette. Auth, wallet, i18n and deploys already solved: each new game is only its own mechanic.

From single-player to real time

The platform grew from individual rounds to a multiplayer game with a single authoritative loop over WebSockets, clock-skew-immune countdowns and server-side auto-cashout at exact targets.

Technology

Nuxt 3ExpressSupabase / PostgresWebSocketsCloud RunCloudflare Workers

Want something like this for your niche?

This product was born from a real problem. Yours can be too.