A shared on-chain bulletin board for Midnight, built on the Kuira Android SDK. One slot: anyone connected to the board can post a message, and the poster can take it down — each action is a real Compact contract transaction, proved on the device.
It's the SDK's end-to-end "hello world": Sigil identity + embedded wallet (both
ride the SDK's floating PanelBar), then a contract with two circuits
(post / takeDown) and a lossless typed ledger read for the current message.
- Identity + Wallet — the SDK's
PanelBarin floating mode drops two draggable chips over the parchment: a sigil chip (one biometric forges a passkey-PRF DID + wallet seed, no seed phrase) and a wallet chip (NIGHT + DUST balance, receive-QR, dust registration, the network picker, and settings). Tap a chip to expand its sheet; drag it to dock at a screen edge. Settings opens as a Compose popup that renders above the sheet — the neutral, monochrome pills theming themselves into the host's brand. - Contract —
bboard.compact(contract/src/), compiled to JS + proving keys undercontract/src/managed/bboard. Theio.github.kuiralabs.contractGradle plugin syncs it into the app's assets at build (kuiraContract { … }inapp/build.gradle.kts). - dApp logic —
BBoardViewModeldrives deploy →post→takeDown, with a staged progress bar (ContractCallProgressBar) over the prove/balance/submit wait. The board reads its on-chain state viaBBoardRepository.fetchBoardState()on connect, then re-reads on the explicit refresh button — a manual, pull-to-read flow (no live ledger subscription).
./gradlew :app:installDebug
Then forge a sigil, fund the wallet on localnet, deploy a board, and post.
This example pins io.github.kuiralabs:dapp-ui and the
io.github.kuiralabs.contract plugin, resolved from Maven Central. To point it
at your own passkey domain, set rpId in IdentityConfigModule and host a
matching assetlinks.json.
Apache-2.0 — see LICENSE.