A lexicon-driven AppView for ATProto.

Local Development with Docker #

This guide runs the full HappyView stack locally using Docker Compose: Postgres, Tap, HappyView, and the web dashboard.

Prerequisites #

  • Docker and Docker Compose
  • An AIP instance for OAuth. The Docker Compose config points at the public AIP instance at aip.gamesgamesgamesgames.games by default.

:::warning This public AIP instance is provided for development convenience only. Production deployments should run their own AIP instance or risk being blocked. See the AIP documentation for setup. :::

1. Clone and configure #

git clone https://github.com/graze-social/happyview.git
cd happyview
cp .env.example .env

Set TAP_ADMIN_PASSWORD in your .env. This shared secret is used by both Tap and HappyView:

TAP_ADMIN_PASSWORD=your-secret-here

The docker-compose.yml configures everything else (database URLs, service connections) automatically.

2. Start the stack #

docker compose up

This starts:

Service Port Description
postgres 5432 PostgreSQL 17 (databases for both HappyView and Tap)
tap 2480 Firehose consumer, backfill worker
happyview 3000 HappyView API server
web 3001 Next.js dashboard

HappyView runs migrations automatically on startup. The first build will take a few minutes while Rust compiles.

Next steps #

Your HappyView stack is running. Follow the Statusphere tutorial to upload lexicons, add custom query logic, and start indexing records from the network.