# Example Apps

*[Documentation index](/llms.txt) · [Full index](/llms-full.txt)*

Explore examples that demonstrate common Sui development patterns. Each example includes source code, setup instructions, key code highlights, and troubleshooting guidance.

- [Capability Pattern](capability-pattern) — Control access to privileged operations in Move using capability objects that you can delegate, revoke, and compose.
- [dApp Kit](dapp-kit-frontend) — Build a React frontend that connects a wallet, mints an NFT through a Move contract, queries owned objects, and refreshes the UI automatically using Sui dApp Kit and React Query.
- [Derived Objects](derived-objects) — Create deterministic Sui objects whose IDs you can predict offchain before the objects exist, using four derivation strategies in Move and the TypeScript SDK.
- [Real-Time Event Indexer](event-indexer) — Build a real-time event indexer that subscribes to Sui checkpoints through gRPC, filters for specific Move events, and decodes BCS-encoded event data in TypeScript.
- [Lootbox](lootbox-ctf) — Exploit a public randomness function in a lootbox contract by deploying a wrapper module that aborts losing transactions, so you only pay when you win.
- [Merchant Using USDC](merchant-ctf) — Buy a flag from a Move merchant contract by acquiring Testnet USDC and building a transaction that pays the exact amount required.
- [NFT Minting App](nft-app) — Build an end-to-end app with a Hero NFT Move contract and a React frontend that mints heroes, equips weapons, and queries onchain state.
- [Plinko](plinko) — Build a provably fair, gasless Plinko game on Sui using onchain randomness and sponsored transactions through Enoki.
- [Scenario Testing](scenario-testing) — Write multi-transaction tests for Move smart contracts using test_scenario to simulate real-world flows with multiple users, shared objects, and cross-module interactions.
- [Staking with Time-Accumulation](staking-ctf) — Analyze a staking contract with a time-accumulation vulnerability and exploit the receipt merging logic to claim the flag without waiting a full week.
