Neon Crow Games
A platform for card games played live on stream. Viewers join in from chat, an overlay shows the table without giving away anyone's hand, and the whole thing is built so a second game is a plugin, not a rewrite.
Prototype Java 21 Spring Boot React PixiJS PostgreSQL
What it does
Games as plugins
Register one game module and it inherits accounts, sessions, decks, packs, rewards, progression and overlays without writing any of them.
Play from chat
Viewers drive a live game with ordinary chat commands, routed to their linked account and answered back in the channel.
A stream-safe overlay
A public browser source renders the table for broadcast with player hands deliberately withheld — three separate views of the same game.
Collections that persist
Cards live in a permanent inventory, packs roll by rarity, and decks are validated against what you actually own.
Watching earns something
Follows, subscriptions and channel-point redemptions all flow through one server-side reward engine that grants experience and cards.
Provable without a stream
A built-in simulator runs the entire loop — fake viewers, packs, decks, a live session, rewards and progression — with nothing else attached.
A look at it
How it's built
A Spring Boot service holds the game state and pushes updates over websockets, backed by PostgreSQL and Redis. The interesting part is the split: everything game-agnostic — identity, inventory, decks, rewards, progression — lives in the platform, and an individual game supplies only its engine, deck rules and chat commands. The engine redacts hands on the server rather than trusting the client, and every action is re-stamped with the authenticated player's identity so a spoofed message goes nowhere.
- Website
- neoncrowgames.com
- Backend
- Java 21, Spring Boot, REST plus STOMP websockets, JWT auth
- Data
- PostgreSQL with Flyway migrations, Redis
- Client
- React and TypeScript with PixiJS rendering the card table
- Stream integration
- Twitch sign-in, chat commands and event subscriptions, behind a swappable interface
- Testing
- JUnit with Testcontainers, plus a headless full-game test that needs no database
- First game
- Cryptid Archives Live — hand, field and archive board with newspaper scoring
- Status
- Working prototype. Playable end to end in simulation; the live stream integration is built but has not yet been run against production Twitch.
Questions about this build?
It's still taking shape, and I'm glad to talk through how it's put together.
Get in touch