···49495050## Next steps
51515252-Here's where to go from here:
5353-5454-- [**Statusphere tutorial**](../tutorials/statusphere.md): end-to-end walkthrough building a complete AppView with record, query, and procedure lexicons
5252+- [**Statusphere tutorial**](../tutorials/statusphere.md): full walkthrough building a complete AppView with record, query, and procedure lexicons
5553- [**Lexicons guide**](../guides/lexicons.md): target collections, backfill flag, network lexicons
5654- [**Lua Scripting**](../guides/scripting.md): custom query and procedure logic
5755- [**Configuration**](configuration.md): environment variables and tuning
+1-1
packages/docs/docs/guides/backfill.md
···19192020## Job lifecycle
21212222-A backfill job moves through `pending → running → completed` (or `failed`). Unlike earlier versions of HappyView that relied on Tap, the job is only marked `completed` once every discovered repo has been processed end-to-end — there is no separate downstream queue. Progress is visible in real time on the dashboard's Backfill page.
2222+A backfill job moves through `pending → running → completed` (or `failed`). Unlike earlier versions of HappyView that relied on Tap, the job is only marked `completed` once every discovered repo has been fully processed — there is no separate downstream queue. Progress is visible in real time on the dashboard's Backfill page.
23232424If a job fails midway, the `error` field contains the failure reason. Re-running the backfill resumes from scratch but is idempotent (records are upserted by URI).
2525
···37373838## Use case
39394040-A straightforward list endpoint for feeds, timelines, or browsing records by collection. The `cursor` value returned by `db.query` is an opaque string. Clients pass it back as the `cursor` parameter to fetch the next page — don't parse or modify it.
4040+A list endpoint for feeds, timelines, or browsing records by collection. The `cursor` value returned by `db.query` is an opaque string. Clients pass it back as the `cursor` parameter to fetch the next page — don't parse or modify it.
+2-2
packages/docs/docs/tutorials/statusphere.md
···108108109109See [XRPC API](../reference/xrpc-api.md) for the full default query behavior.
110110111111-## Step 4: Enhance the query with a Lua script
111111+## Step 4: Customize the query with a Lua script
112112113113The default query behavior works, but let's customize it with a [Lua script](../guides/scripting.md). The script will handle single-record lookups by URI and paginated listing with an optional DID filter.
114114···216216- [XRPC API](../reference/xrpc-api.md): Understand how the generated endpoints behave
217217- [Admin API](../reference/admin-api.md): Automate lexicon management via the API
218218- [Statusphere example app](https://github.com/bluesky-social/statusphere-example-app): See the full Statusphere frontend
219219-- [ATProto Statusphere guide](https://atproto.com/guides/applications): Deep dive into how the app works at the protocol level
219219+- [ATProto Statusphere guide](https://atproto.com/guides/applications): How the app works at the protocol level