WIP! A BB-style forum, on the ATmosphere!
We're still working... we'll be back soon when we have something to show off!
node
typescript
hono
htmx
atproto
1# AppView configuration
2PORT=3000
3FORUM_DID=did:plc:your-forum-did-here
4PDS_URL=https://your-pds.example.com
5JETSTREAM_URL=wss://jetstream2.us-east.bsky.network/subscribe
6
7# Logging
8LOG_LEVEL=info # debug | info | warn | error | fatal
9
10# Database
11# PostgreSQL (default, used with devenv):
12DATABASE_URL=postgres://atbb:atbb@localhost:5432/atbb
13
14# SQLite alternative (no devenv postgres needed):
15# DATABASE_URL=file:./data/atbb.db
16# DATABASE_URL=file::memory:?cache=shared # in-memory, for tests only
17
18# Web UI configuration
19# WEB_PORT=3001 # set in web package, or override here
20APPVIEW_URL=http://localhost:3000
21
22# Forum Service Account credentials (for AppView writes)
23FORUM_HANDLE=your-forum-handle
24FORUM_PASSWORD=your-forum-password
25
26# OAuth Configuration
27OAUTH_PUBLIC_URL=http://localhost:8080
28# The public URL where the forum is accessible (used as OAuth client_id and redirect_uri base).
29# AT Protocol fetches {OAUTH_PUBLIC_URL}/.well-known/oauth-client-metadata — nginx routes
30# this to AppView, so OAUTH_PUBLIC_URL must be the nginx address (not AppView directly).
31# For local dev with devenv: http://localhost:8080 (devenv nginx runs on port 8080)
32# For production: https://your-forum-domain.com
33
34SESSION_SECRET=CHANGE_ME_SEE_COMMENT_BELOW
35# Used for signing session tokens (prevent tampering)
36# Generate with: openssl rand -hex 32
37
38SESSION_TTL_DAYS=7
39# How long sessions last before requiring re-authentication (default: 7 days)
40
41# Optional: Redis session storage (leave blank to use in-memory)
42# REDIS_URL=redis://localhost:6379
43# If set, uses Redis for session storage (supports multi-instance deployment)
44# If blank, uses in-memory storage (single-instance only)
45
46# Role seeding
47SEED_DEFAULT_ROLES=true # Set to "false" to disable auto-seeding on startup
48DEFAULT_MEMBER_ROLE=Member # Role name to auto-assign to new memberships (empty for manual assignment)