Pure game state
Board data, types, rules and save validation live in
lib/game. One reducer decides whether actions are
valid. Player property-ID lists are the authoritative ownership
model.
THE BUILD BOOK
A local game with a shared rules engine, portable saves and a warm interface. Explore how a turn moves through the game and how releases reach players.
Board data, types, rules and save validation live in
lib/game. One reducer decides whether actions are
valid. Player property-ID lists are the authoritative ownership
model.
Android uses AsyncStorage, while web and Windows use separate localStorage origins. JSON import/export moves a settled game between them. No backend or account is required.
Expo Router provides setup, game, privacy, downloads and settings screens. A shared light/dark palette drives native controls and the board. The first-turn tour advances through real player actions.
flowchart LR Rules["Board · types · reducer · validation"] --> Expo["Expo GUI"] Expo --> Android["Android · AsyncStorage"] Expo --> Web["Web · localStorage"] Expo --> Windows["Windows · bundled web"] Android & Web & Windows --> JSON["Portable JSON saves"]
This is a synthetic example, separate from your saved game. Asha rolls 2 + 2 and lands on Goa.
Balance ₹15,000. No properties. Start position.
Step 1 of 5
Buying is allowed only during the current player’s unclaimed landing decision. Inspection never enables a purchase, and duplicate ownership is rejected.
Pass is available even at ₹0. Rent and taxes are capped at available cash. Completed landings expose End turn so the device can pass to the next player.
Start grants ₹2,000 when passed or landed on. Taxes are ₹300, ₹500 and ₹700. Fortune, utilities, transit and corners have no extra effect. Advanced rules and competitive win conditions remain outside this version.
For ₹500 rent, transfer ₹300 and leave ₹0.
stateDiagram-v2 waiting --> moving: roll moving --> decision: unclaimed property moving --> completed: rent / tax / neutral decision --> completed: buy or pass completed --> waiting: end turn
dhan-sampatti.save.v1 stores settled game states.
Animation is never serialized. Validation checks names, balances,
positions, dice, phases, unique ownership and bounded logs; only
supported fields are restored.
dhan-sampatti.settings.v1 stores the theme and tour
preference separately. Export settings does not export or replace
your game. Invalid files leave the existing settings intact.
Unavailable storage displays a readable notice and play remains available. Export a file to keep a copy. Native sharing can use local files or installed Google Drive / OneDrive providers chosen by the player.
The Vercel address and custom domain remain accessible. Export from the old address, then import on the new one. Android and Windows also have their own storage. Imported games are validated and replacement requires confirmation.
Desktop content is confined to bundled files, including real-path checks against symlink and junction escapes. Its renderer is sandboxed with Node integration disabled and permissions denied. Untrusted save text is validated and rendered as text.
The game works locally with bundled resources and no database, authentication, email, payment or notification service. Manual release workflows use provider free allowances; account setup and store review remain owner steps.