What it is
Most games are either physical or digital. Cosmos Wars is both. Each metal coin has an NFC chip; tap it to your phone and the character unlocks in the game.
The challenge wasn’t just building a good-looking mobile UI. It was making the physical-to-digital handoff feel seamless, architecting a multiplayer server that could handle concurrent game rooms without a dedicated infrastructure budget, and designing a battle system that works offline as well as it does with internet.
How it started
Before a single production screen was designed, I built a working prototype covering auth, game room creation, and room joining across React Native clients. That prototype was enough for the client to commit fully to production development.
The stack
- React Native + Expo (managed workflow) for the mobile client
- boardgame.io on Render for the real-time game server
- Supabase for auth, database, and storage
- React Native Skia for the custom game UI and animation layer
- Reanimated 4 for gesture-driven transitions
- NFC reading via react-native-nfc-manager, with a mock system for devices without NFC hardware controlled via EXPO_PUBLIC_ENV flag
Key decisions
Stats are keyed to NFC UID, not player identity, the physical coin is the character. Coins register lazily on first tap. Game rooms are JWT-gated. Boardgame.io handles all sync.
Every decision was validated before a single production screen shipped.
Status
In active development. Playable prototype exists. Production UI currently in the design phase.