Host a single HTML page. Sign up, write or paste your HTML, name it, and it's live at yourname.pa9es.com/pagename. One file per page, no build step, no git repo. Publishing costs credits; buy more by card ($1 = 100 credits, more in bigger packs), no subscription.
Design details live in docs/system-overview.md.
- Next.js (App Router) on Bun
- SQLite (
bun:sqlite) with Drizzle ORM - Better Auth for passwordless auth (email + one-time code)
- Resend for transactional email
- Monaco editor, Tailwind CSS v4, Zod
Requires Bun ≥ 1.3.
bun install
cat > .env <<EOF
BETTER_AUTH_SECRET=$(openssl rand -base64 32)
BETTER_AUTH_URL=http://localhost:3000
ANTHROPIC_API_KEY=<your Anthropic API key>
EOF
bun run db:migrate
bun run devOpen http://localhost:3000. ANTHROPIC_API_KEY needs a real Anthropic API key — AI features are core, so the app refuses to start without one. Without RESEND_API_KEY, sign-in codes are logged to the server console (in the email subject). Without STRIPE_SECRET_KEY + STRIPE_WEBHOOK_SECRET (set both or neither), buying credits is hidden; to test purchases locally, use Stripe test keys and stripe listen --forward-to localhost:3000/api/webhooks/stripe for the webhook secret. Full env schema: src/server/env.ts.
- Use Bun for everything (
bun install,bun run ...,bunx) — seeAGENTS.md src/server/is server-only;src/lib/is browser-safe;src/schemas/andsrc/config/are shared and must not readprocess.env- Absolute imports:
@/src/... - API endpoints return the standard envelope from
src/server/create-response.ts - Schema changes:
bun run db:generate, thenbun run db:migrate - Lint before pushing:
bun run lint