Independent product · Launched
Durak
Durak for iOS, Android, and web. Play online or offline, free and without ads.
Free to play · No ads · Optional cosmetic themes


- Community
400+users
As of
3,000+games played
As of
- Launched
- Available on the App Store
- My role
- Founder & Product EngineerProduct · Design · Development · Release
01 / Problem & product
Why I built
Durak.
I wanted to play Durak, but I couldn't find a good option on the Canadian App Store that combined everything I wanted. The apps I tried each left something out.
I built Durak to bring that combination into one product: support for Apple, Google Play, and web; online and offline play; and a completely free game with no ads. The gap was having all of those together.
I designed and built the interface, rules engine, bot opponents, online multiplayer, local saves, and release workflow. A shared TypeScript core keeps the rules consistent between offline games and online rooms.
Apple, Google Play & web
One product across iOS, Android, and the browser, built with a shared interface and rules engine.
Online & offline play
Online multiplayer and local games against bots. Offline matches need no account or internet connection, and can be saved and resumed.
Free to play, with no ads
All gameplay is free, without ad interruptions. Optional purchases change the card and table artwork, never the rules or difficulty.
02 / The product
Product screenshots
Gameplay, navigation, settings, and optional themes. Interface captures from the September 2026 build.

Gameplay
The player's hand, opponent roles, and active card exchange.

Home screen
Quick Play and Custom Game as the main actions.

Game setup
Rule variants, deck size, opponents, and bot difficulty.

Theme store
Optional card and table artwork, with no gameplay changes.
03 / Design & interaction
Interface
design.
The layout prioritises readable cards, visible turn state, and clear actions on a small screen.
Deep green / Felt / Gold / Ivory
Card-table layout and visual hierarchy
Deep greens, warm gold, and ivory cards give the game a recognisable card-table atmosphere. Generous spacing keeps the hand, trump card, and active exchange easy to follow on a small screen.
Turn feedback and legal actions
Opponent roles, turn messages, and legal-action cues explain what is happening without making the player learn the implementation. Card motion and sound give each action a clear response.
Quick Play and custom settings
Quick Play gets a game started immediately. Custom Game exposes rule variants, deck sizes, and bot difficulty, with less common settings tucked into an advanced section.
04 / Architecture
System architecture
The same deterministic engine powers local games and the online system. Presentation, rules, room behaviour, and hosting each have a clear job.
Interface · Animation · Player input
On the device
Rules engine + bots
Legal actions · State transitions · Replay
Local storage
Saved games · Settings · Records
Online system
Worker + Durable Objects
Authoritative rooms · WebSockets · Shared rules
Firebase Auth + Firestore
Identity · Social records · Elo settlement
Offline games run entirely on-device. Online rooms validate each move on the server and send each player only their own view.
01 / Presentation
One client, several platforms
React Native and Expo handle the interface, card animations, navigation, and input across iOS, Android, and web builds.
02 / Game logic
A shared rules engine
A pure TypeScript core defines state, legal actions, and validated transitions. Human controls, bots, and online rooms use the same rules.
03 / Local play
Offline, on the device
Local bots select legal moves. AsyncStorage keeps saves, settings, and records on-device; deterministic replays reconstruct interrupted games.
04 / Multiplayer
One authority per online room
A Cloudflare Durable Object coordinates each room over WebSockets. The room engine validates moves, tracks timers, and produces messages and snapshots.
05 / Protocol
Only the information a seat can see
Shared protocol types and per-seat redaction keep opponents' cards out of a player's view. Sequence numbers and resync support reconnects.
06 / Accounts
Identity and durable records
Firebase Auth supplies identity. The Worker handles account APIs and Firestore records for social features, moderation, and server-settled Elo.
React Native · Expo · TypeScript · Cloudflare Workers · Durable Objects · Firebase Auth · Firestore · AsyncStorage · React Native Reanimated · Expo IAP · EAS Build · Vitest · Playwright
05 / Development & results
Development
and results.
I owned product scope, design, implementation, testing, and release. These are the main engineering decisions and the results so far.
Results so far
- Launched on September 15, 2026, with 400+ users reported as of October 5, 2026
- 3,000+ games played, reported as of October 8, 2026
- Delivered Throw-in and Transfer modes, three bot difficulties, save-and-resume, and optional cosmetic packs
- Delivered online multiplayer and offline play across iOS, Android, and web
- Kept all gameplay free to play and without ads, with optional cosmetic purchases
- Owned the product from interaction design through implementation, review, and release
Keep the rules independent of the interface
The core has no React Native or hosting dependency. That makes complicated card sequences testable as data and lets the same engine serve local play and an authoritative online server.
Make offline play a complete experience
Bundled assets, local bots, and persistent saves keep a full match available without a network. Adding accounts and online rooms does not make them prerequisites for the offline game.
Separate room behaviour from hosting
The online room engine returns effects: messages to send, timers to schedule, and snapshots to store. A thin Cloudflare adapter performs them, keeping game behaviour testable independently of the platform.
Keep purchases cosmetic
Cosmetic themes change card and table artwork. Purchase entitlements stay separate from the rules and bot strategies, so the visual choice does not change legal moves or opponent strength.
End-to-end ownership
My responsibilities
- Product direction and release scope
- Interface and interaction design
- Shared rules engine and bot strategies
- Offline persistence and replay
- Multiplayer architecture and room lifecycle
- Accounts, moderation, and rating workflows
- Cosmetic purchase integration
- Testing, review, and App Store delivery
What I learned
- A clean boundary around the rules makes both interface changes and multiplayer development easier to reason about
- The small details of feedback, spacing, and card movement matter as much as adding another feature
- Deterministic game states turn difficult bugs into sequences that can be reproduced and tested
Available on the App Store
Download Durak
Free to play, with online and offline games and no ads.