A lexicon-driven AppView for ATProto. happyview.dev
backfill firehose jetstream atproto appview oauth lexicon
8
fork

Configure Feed

Select the types of activity you want to include in your feed.

docs: expand labeler info

Trezy 2c623b70 6728d6e5

+16 -6
+13 -5
packages/docs/docs/guides/labelers.md
··· 67 67 68 68 Labels are also available in the records API response and in Lua scripts via the [`atproto.get_labels` and `atproto.get_labels_batch`](../reference/lua/atproto-api.md#atprotoget_labels) functions. 69 69 70 + ## Using labels in your AppView 71 + 72 + Labeler subscriptions give your AppView access to content moderation signals without building your own moderation system. Some ways to use them: 73 + 74 + - **Content filtering**: Use labels in query scripts to exclude or down-rank flagged content. Check labels with `atproto.get_labels` and filter results before returning them. 75 + - **Moderation dashboards**: Display labels alongside records in your admin dashboard to review flagged content. Labels appear automatically on the Records page once a labeler is subscribed. 76 + - **Custom labelers**: You can subscribe to any labeler that implements the atproto labeler spec, including community-run labelers or one you operate yourself for domain-specific moderation (e.g. labeling game content by age rating). 77 + 70 78 ## Permissions 71 79 72 - | Action | Permission | 73 - | ------------------------ | ----------------- | 74 - | View labeler list | `labelers:read` | 75 - | Add or pause/resume | `labelers:create` | 76 - | Delete a labeler | `labelers:delete` | 80 + | Action | Permission | 81 + | ------------------- | ----------------- | 82 + | View labeler list | `labelers:read` | 83 + | Add or pause/resume | `labelers:create` | 84 + | Delete a labeler | `labelers:delete` | 77 85 78 86 ## Next steps 79 87
+3 -1
packages/docs/docs/reference/architecture.md
··· 27 27 Relay["Relay<br/><small>listReposByCollection</small>"] -->|repo discovery| Backfill 28 28 Backfill["Backfill Worker"] -->|listRecords| PDS 29 29 Backfill --> DB 30 + 31 + Labeler["Labeler<br/><small>WebSocket (out-of-band)</small>"] -->|label events| DB 30 32 ``` 31 33 32 - Queries go through the query handler to the database (SQLite by default, or Postgres). Writes go through the procedure handler to the user's PDS, then HappyView indexes the record locally. Real-time record events stream in via [Jetstream](https://github.com/bluesky-social/jetstream); historical records are backfilled in-process by discovering repos via the relay's `listReposByCollection` and fetching records directly from each PDS. 34 + Queries go through the query handler to the database (SQLite by default, or Postgres). Writes go through the procedure handler to the user's PDS, then HappyView indexes the record locally. Real-time record events stream in via [Jetstream](https://github.com/bluesky-social/jetstream); historical records are backfilled in-process by discovering repos via the relay's `listReposByCollection` and fetching records directly from each PDS. [Labelers](../guides/labelers.md) are external services that emit content labels over a direct WebSocket connection — they operate out-of-band, outside the relay/repo system. 33 35 34 36 ## Request flow 35 37