# What You Can Build

ChainRender scales from a single element to a full multi-view application. Understanding the levels helps you pick
the right starting point. They're the same primitives at different scales — a bigger thing is a composition of
smaller things.

## 1. Components

The atom. A single, self-contained UI element rendered from the vocabulary — a button, a card, a chart, an
identity badge, a piece of generative art. A component:
- compiles to a content-addressed hash,
- renders from a free `eth_call`,
- can bind live on-chain data and declare a safe action,
- carries its own trust grade.

**Build a component when** you want one on-chain UI element — e.g. an on-chain `tokenURI` image, a live price
badge, a claim button — that you can drop into an existing site or embed anywhere.

## 2. Mini-apps

A composition of components with its own identity. A mini-app is content-addressed, forkable (it records its
parent on-chain), and has an aggregated capability envelope and grade. It's a self-contained, composable unit —
the natural size for a focused tool (a swap widget, a governance vote card, a credential check).

**Build a mini-app when** you want a small, complete, shareable app that others can discover, use, and fork — and
that composes into larger apps.

## 3. Standalone (multi-view) apps

A full application with multiple views and in-app navigation (tabs, wizard, master-detail, modal). A standalone
app has a shell, several views, on-chain-enforced reachability (no stranded views), and a unified envelope across
everything. This is a complete dApp frontend — canonical, un-spoofable, permanent.

**Build a standalone app when** you want a real product frontend — the flagship swap app (Quote / Venues / Route
tabs) is exactly this shape.

## 4. Distributed forms

Any of the above can also be shipped as:
- a **Farcaster Mini App** (via the miniapp adapter),
- an **on-chain NFT** (`tokenURI` returns a ChainRender component),
- an **embedded widget** (render the HTML into any page),
- a **web3:// served** resource (ERC-5219/4804).

The app doesn't change to take these forms — it's the same on-chain component with a distribution wrapper.

## How to choose

| You want… | Build a… | Start with |
|---|---|---|
| One on-chain UI element | **Component** | `create-chainrender` → Single component (T1) |
| A focused, shareable tool | **Mini-app** | `create-chainrender` → Mini-app (T2) |
| A full product frontend | **Standalone app** | `create-chainrender` → DeFi app (T3) |
| Farcaster distribution | any of the above + adapter | `create-chainrender` → Farcaster Mini App |

Everything composes: components → mini-apps → standalone apps. Start small, grow by composition — you never
outgrow the model.

## Related
- **[Composition & Mini-Apps](./composition.md)** · **[Templates](../reference/templates.md)** ·
  **[Scaffolding a Project](../getting-started/scaffolding.md)**

## DeFi dashboards & apps

A fully on-chain DeFi frontend: render a user's LP and lending positions (including health factor / liquidation
risk), live prices, pre-trade quotes, and portfolio totals — then let them swap, approve, deposit, or claim via
decoded actions. Rendering is a free `view`; only signing an action costs gas. See
[DeFi Capabilities](./defi-capabilities.md) for the complete guide.

## Apps with payments (incl. non-native users)

Add a payment to any app with the crypto payment as the trustless floor and an optional card/fiat on-ramp as an
honestly-graded off-chain enhancement — so users without crypto can still pay by card while the on-chain guarantee is
never overstated. Combined with an embedded-wallet SDK (email login → invisible wallet) and a paymaster (sponsored
gas), non-native users can onboard end to end. See [Payments](./payments.md).

## RWA (real-world asset) dashboards

A fully on-chain frontend for tokenized real-world assets: render Proof-of-Reserve coverage (reserves vs. supply),
ERC-3643 (T-REX) compliance state (verified / frozen / can-transfer), and issuer-bound credential lifecycle
(valid / expired / revoked) — each honestly graded, and compliance shown, never enforced by ChainRender. The reserve
read is Grade A; a compliance verdict is a faithful render of a mutable authority (≤ C), labeled as such. See
[RWA Capabilities](./rwa-capabilities.md).

## Reputation & social apps

Render an address's on-chain reputation: its EFP social graph (does this list follow / tag / block / mute a target —
forward reads, Grade A), delegated vouches under a caller-chosen topic (`rep-vouch` / a transparent k-of-n
`rep-tally`), and a cross-source aggregate (`rep-aggregate`) whose grade is capped at its weakest input. ChainRender
reads and renders reputation — it never mints a score, ranks addresses, or blesses an attester. Follower counts and
reverse lookups are off-chain (indexer) and graded ≤ C, never presented as an on-chain fact. See
[Reputation Capabilities](./reputation-capabilities.md).

## Identity & profile apps

Build an identity UI over live on-chain sources: ENS profiles (forward-verified reverse resolution, records, ENS-v2),
EAS attestations, ZK selective-disclosure credentials (member-of-set, bound single-use), and **ERC-725Y / ERC-735
account** claim reads (the standard behind LUKSO Universal Profiles) via `staticread` today — read against a
**co-located** account (same chain the resolver is deployed on); a typed reader is planned. LUKSO's own chain is **not
integrated as of now** — a live LUKSO Universal Profile would require ChainRender deployed on LUKSO; today's reach is
same-chain ERC-725Y/735 accounts. Owned/mutable identity sources render as "the current claim of authority Y" (≤ C),
never as proof — the honest boundary throughout. See
[Reputation Capabilities](./reputation-capabilities.md#erc-725y--erc-735-accounts) and
[Privacy & Credentials](./privacy.md).
