A lexicon-driven AppView for ATProto.
  • Rust 66.1%
  • TypeScript 32.6%
  • CSS 0.5%
  • Nix 0.4%
  • Shell 0.2%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
ntm 87c77e2372
Some checks failed
CI / changes (push) Has been cancelled
CI / mirror (push) Has been cancelled
CI / build-server (push) Has been cancelled
CI / unit-tests (push) Has been cancelled
CI / e2e-tests (push) Has been cancelled
CI / frontend (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / audit (push) Has been cancelled
CI / playwright (push) Has been cancelled
CI / pr-build (amd64, linux/amd64, depot-ubuntu-24.04) (push) Has been cancelled
CI / pr-build (arm64, linux/arm64, depot-ubuntu-24.04-arm) (push) Has been cancelled
CI / pr-build-comment (push) Has been cancelled
CI / release (push) Has been cancelled
CI / build (amd64, linux/amd64, depot-ubuntu-24.04) (push) Has been cancelled
CI / build (arm64, linux/arm64, depot-ubuntu-24.04-arm) (push) Has been cancelled
CI / test-oauth-client (push) Has been cancelled
CI / test-oauth-client-browser (push) Has been cancelled
CI / test-oauth-client-node (push) Has been cancelled
CI / test-lex-agent (push) Has been cancelled
CI / release-oauth-client (push) Has been cancelled
CI / release-oauth-client-browser (push) Has been cancelled
CI / release-oauth-client-node (push) Has been cancelled
CI / release-lex-agent (push) Has been cancelled
DNS fix
2026-08-05 16:58:27 -05:00
.cargo chore: update _so many_ deps 2026-07-08 14:55:03 -05:00
.github fix: verify CIDs 2026-07-08 20:29:09 -05:00
design docs: ALL the docs 2026-02-23 18:10:23 -06:00
migrations fix: add independent logging for jobs 2026-07-17 21:25:14 -05:00
nix DNS fix 2026-08-05 16:58:27 -05:00
packages fix: enforce allowedCollections when creating records in a space 2026-07-16 09:53:09 -05:00
scripts fix: remove user drop from e2e setup 2026-07-08 19:57:53 -05:00
src fix: add independent logging for jobs 2026-07-17 21:25:14 -05:00
tests fix: add independent logging for jobs 2026-07-17 21:25:14 -05:00
web fix: add independent logging for jobs 2026-07-17 21:25:14 -05:00
.dockerignore ci: prevent tests from hitting ci time limits 2026-06-24 16:01:23 -05:00
.env.example fix: prevent use of default session secret 2026-07-07 11:49:49 -05:00
.gitignore chore: gitignore bun.lock 2026-05-27 08:06:31 -05:00
.releaserc.json ci: trigger docker build from the main ci workflow 2026-05-11 13:07:09 -05:00
.vercelignore docs: clarity improvements 2026-04-19 21:22:34 -05:00
bun.lock Merge remote-tracking branch 'origin/main' into dev 2026-07-06 15:45:31 +00:00
Cargo.lock fix: verify CIDs 2026-07-08 20:29:09 -05:00
Cargo.toml fix: verify CIDs 2026-07-08 20:29:09 -05:00
CODE_OF_CONDUCT.md docs: add CoC and license docs 2026-02-13 13:05:54 -06:00
docker-compose.e2e.ci.yml ci: prevent tests from hitting ci time limits 2026-06-24 16:01:23 -05:00
docker-compose.e2e.yml ci: run e2e as root in CI 2026-07-08 13:38:24 -05:00
docker-compose.test.yml test: add e2e tests for health, admin, and XRPC routes 2026-02-13 10:17:30 -06:00
docker-compose.yml chore: update _so many_ deps 2026-07-08 14:55:03 -05:00
Dockerfile fix: revert to root user in Dockerfile 2026-07-08 19:05:27 -05:00
entrypoint.sh fix: revert to root user in Dockerfile 2026-07-08 19:05:27 -05:00
flake.lock fixed I think 2026-08-04 22:37:51 -05:00
flake.nix add nix flake (web part broken) 2026-07-26 12:27:39 -05:00
LICENSE.md docs: add CoC and license docs 2026-02-13 13:05:54 -06:00
package.json feat: add js sdks 2026-04-16 23:49:59 -05:00
README.md deepseek lecturing me about using the exact PUBLIC_URL 2026-08-05 00:01:45 -05:00
rust-toolchain.toml chore: update _so many_ deps 2026-07-08 14:55:03 -05:00
tsconfig.json feat: add js sdks 2026-04-16 23:49:59 -05:00

HappyView

HappyView is the best way to build an AppView for the AT Protocol. Upload your lexicon schemas and get a fully functional AppView, complete with XRPC endpoints, OAuth, real-time network sync, and historical backfill, without writing a single line of server code.

Building an AppView from scratch means wiring up real-time event streams, record storage, XRPC routing, OAuth flows, and PDS write proxying before you can even think about your application. HappyView handles all of that. Define your data model with lexicons, add custom logic with Lua scripts when you need it, and ship your app.

Features

  • Schema-driven endpoints: Upload a lexicon and HappyView generates XRPC query and procedure routes, storage, and indexing from it — updatable at runtime with no restart.

  • Network sync built in: Real-time record streaming via Jetstream, historical backfill from each user's PDS, and atproto OAuth with DPoP-bound proxy writes back to the PDS.

  • Customize with Lua scripts and plugins: Trigger-keyed Lua scripts for XRPC query/procedure logic and record/label event handling, WASM plugins for external platform integration, and labeler subscriptions for content moderation.

  • Protocol-native: Works with any PDS, resolves DIDs through the directory, and fetches network lexicons via DNS authority resolution.

  • Full admin surface: Built-in dashboard and admin API for managing lexicons, users, API keys, API clients, backfill jobs, and plugins.

Design Principles

  • Schema-first: Your Lexicons are the source of truth. Upload a schema and HappyView derives endpoints, indexing rules, and network sync from it. You describe what your data looks like; HappyView figures out the rest.

  • Zero boilerplate: HappyView handles AppView infrastructure (Jetstream, backfill, OAuth, PDS proxying) for you. You should be writing application logic from minute one, not plumbing.

  • Runtime-configurable: Lexicons can be added, updated, and removed without restarting the server. New endpoints and sync rules take effect immediately, so you can iterate on your data model in real time.

  • Protocol-native: HappyView works with any PDS, resolves DIDs through the directory, and follows atproto conventions. It's a first-class citizen of the network, not a wrapper around it.

Documentation

Full documentation is available at happyview.dev.