A lexicon-driven AppView for ATProto.
happyview docs getting-started configuration.md
2.9 kB

Configuration #

HappyView is configured via environment variables. A .env file in the project root is loaded automatically on startup. See Deployment for local setup or Production Deployment for production setup.

Environment variables #

Variable Required Default Description
DATABASE_URL yes --- Database connection string. SQLite (sqlite://path/to/db?mode=rwc) or Postgres (postgres://user:pass@host/db)
DATABASE_BACKEND no auto-detected Force sqlite or postgres. Auto-detected from DATABASE_URL scheme if not set
PUBLIC_URL yes --- Public-facing URL for HappyView (used for OAuth callbacks, e.g. https://happyview.example.com)
SESSION_SECRET no dev default Secret key for signing session cookies. Must be set in production
HOST no 0.0.0.0 Bind host
PORT no 3000 Bind port
TAP_URL no http://localhost:2480 Tap instance URL for real-time record streaming and backfill
TAP_ADMIN_PASSWORD no --- Shared secret for authenticating with Tap's admin endpoints
RELAY_URL no https://bsky.network Relay URL for backfill repo discovery
PLC_URL no https://plc.directory PLC directory URL for DID resolution
EVENT_LOG_RETENTION_DAYS no 30 Number of days to keep event logs before automatic cleanup. Set to 0 to disable cleanup
RUST_LOG no happyview=debug,tower_http=debug Log filter (uses tracing_subscriber::EnvFilter)
APP_NAME no --- Application name shown on OAuth authorization screens. Overridden by database setting if set via admin API
LOGO_URI no --- URL to application logo for OAuth screens. Overridden by database setting or logo upload
TOS_URI no --- URL to terms of service. Overridden by database setting if set via admin API
POLICY_URI no --- URL to privacy policy. Overridden by database setting if set via admin API

Example .env #

# SQLite (default — zero setup required)
DATABASE_URL=sqlite://data/happyview.db?mode=rwc
PUBLIC_URL=http://localhost:3000
SESSION_SECRET=change-me-in-production

# Or use Postgres instead:
# DATABASE_URL=postgres://happyview:happyview@localhost/happyview

# Optional overrides
# HOST=0.0.0.0
# PORT=3000
# TAP_URL=http://localhost:2480
# TAP_ADMIN_PASSWORD=your-secret-here
# RELAY_URL=https://bsky.network
# PLC_URL=https://plc.directory
# EVENT_LOG_RETENTION_DAYS=30
# RUST_LOG=happyview=debug,tower_http=debug
# APP_NAME=My App
# LOGO_URI=https://example.com/logo.png
# TOS_URI=https://example.com/tos
# POLICY_URI=https://example.com/privacy