🏛
Marina Heights OA Owners Association · Dubai Law No. 6 of 2019 · s0sta.com/hoa
—

The Chamber

loading…
Loading proposals…

Building register

loading…

🧭

How to use the dApp — and what happens on-chain

The demo association lives on Sepolia. Every action below talks to three contracts — OwnersAssociationGovernor for decisions, JOPUnitRegistry for units & charges and TreasuryVault for funds — and every vote is weighted by owned area (sqm), exactly as Dubai Law No. 6 of 2019 requires.

1️⃣

How to use

  1. Connect your wallet with the top-right button; the dApp is configured for Sepolia, so keep a little ETH for gas and some AED-S (MockStable) to pay charges.
  2. Check Your voting power — your owned sqm plus live proxy power. To lend your vote, type an owner address and a number of days, then press Delegate (revoke anytime).
  3. Settle your share: in Treasury & association, enter an AED-S amount and press Pay charges.
  4. Shape a decision: in Create a proposal, pick a type, target, calldata and description, then press Propose.
  5. Decide: in The Chamber, press 👍 For / 👎 Against while voting is open; after the timelock, anyone presses Execute.
⛓

The process — what happens on-chain

  1. JOPUnitRegistry holds the building ledger — units, areas, owners. Service charges accrue per sqm per year, and Pay charges settles your unit's debt in AED-S, forwarded straight to the treasury.
  2. OwnersAssociationGovernor.propose() validates your proposal's type, target (registry, treasury or governor only) and calldata, then opens the Review stage. The board may fast-track it.
  3. vote() weighs each owner by the area snapshot recorded at proposal block − 1 in the registry's Checkpoints history: owned sqm plus delegated proxy area.
  4. Quorum & timelock — the proposal passes only if it clears its per-type statutory quorum (basis points of total building area), then waits out the Timelock (Emergency proposals skip it).
  5. execute() runs the stored calls into JOPUnitRegistry or TreasuryVault (e.g. payVendor), which refuses any payment that would breach the reserve or the board's 30-day ceiling.
🧩

Flow graph

On-chain journey of an association decision — left to right 1 Connect wallet your wallet · Sepolia 2 Pay charges JOPUnitRegistry 3 Propose Governor.propose() 4 Vote by area Governor · Checkpoints 5 Execute TreasuryVault

■ brass box = a stage you drive · → blue arrow = the state advances on-chain