# The Apps Directory (Collection Page)

The **Apps** page (linked from the explorer header) is a browsable directory of runnable ChainRender apps. It exists
because some apps \u2014 especially **rich-media** (games, generative art) \u2014 present far better full-page than as a
small component-catalog card, where only their on-chain *floor* renders.

## Two sections

**Deployed apps** \u2014 read **directly from `SceneComponentRegistry` on-chain**. Every rich-media app you deploy
registers its scene there, so the page enumerates scenes (`count` / `idAt` / `bindingOf`), decodes each binding
(`libHash`, `seed`, `sketchId`) into a full-page viewer URL, and shows it as a card. **Self-updating and fully
on-chain** \u2014 no JSON, no manual step; deploy an app and it appears. Apps whose library is not on-chain (older
pre-fix deploys with a zero `libHash`) are skipped, so only genuinely on-chain apps are listed.

**Tools** \u2014 a small curated list (`webapps/apps-collection.json`) of first-party ChainRender utilities: theme tools,
ID Sigil, on-chain Cartography, SDF showcases, games. These are ChainRender's own showcases, honestly distinct from
user-deployed apps. (This index is off-chain metadata \u2014 a table of contents; the tools themselves are on-chain.)

## Why full-page

A component catalog card renders an app's on-chain **floor** (the poster). For a rich-media app, the floor is what
non-GPU clients see, but the interactive experience (the p5/three sketch) wants the whole viewport. The Apps page
links each app to its full-page viewer, which loads the sketch from SourceStore + the library from DependencyRegistry
and runs it \u2014 the complete experience, not just the floor.

## Sharing a deployed app

Every deploy produces a complete, self-contained viewer URL
(`chainrender-viewer.html?type=richmedia&kind=...&sketch=0x...&lib=0x...`). That URL is shareable anywhere \u2014 anyone
who opens it gets the full app, loaded from chain. The Apps page reconstructs these URLs from the on-chain scene
registry automatically.

## The cards use on-chain icons

The Apps page dogfoods the on-chain icon library: each card's icon is fetched from the on-chain `icons` library and
rendered from chain \u2014 the collection of on-chain apps, displayed with on-chain icons.

## Honest boundary

The on-chain scene binding stores `libHash`, `seed`, and `sketchId` \u2014 enough to run the app \u2014 but not a title, so
cards show a readable id-based name ("3D Scene a1b2c3") rather than a human title. Richer names await a title field
in the scene binding (a planned additive enhancement).


## Related
- **[Rich Media](./rich-media-p5-three.md)** — the rich-media apps the directory lists full-page.
- **[Composition](./composition.md)** — how deployed apps are assembled.
- **[On-Chain Icons](./icons.md)** — the directory's cards render on-chain icons.
- **[Content Addressing](./content-addressing.md)** — the hash identity the directory reads.
