Session canvas · live

html-docs · main · 2026-07-03

workingnew prompt 13:37

  • Increment 1: schema + plan limits (SQL, plans.ts, tiers.ts, .env.example)
  • Increment 2: Stripe plumbing (SDK, billing-ops, checkout/portal/webhook routes)
  • Increment 3: billing UI (settings page, pricing CTAs, user-menu link)
  • Increment 4: page-limit enforcement
  • Increment 5: AI-credit enforcement on 6 surfaces
  • Verify (build) + commit/push + Stripe setup instructions

13:22 Agent Design Stripe billing plan
13:23 Read route.ts
13:24 Write cozy-floating-leaf.md
13:24 ToolSearch
13:37 ToolSearch
13:37 Bash pnpm add stripe 2>&1 | tail -3
13:40 ExitPlanMode
13:40 TaskCreate Increment 1: schema + plan limits (SQL, plans.ts, tiers.ts, .env.example)
13:40 TaskCreate Increment 2: Stripe plumbing (SDK, billing-ops, checkout/portal/webhook routes)
13:40 TaskCreate Increment 3: billing UI (settings page, pricing CTAs, user-menu link)
13:40 TaskCreate Increment 4: page-limit enforcement
13:40 TaskCreate Increment 5: AI-credit enforcement on 6 surfaces
13:40 TaskCreate Verify (build) + commit/push + Stripe setup instructions
13:40 TaskUpdate #1 → in_progress
13:40 Bash pnpm add -w stripe 2>&1 | tail -3

2 files · +19 −0

Findings

State of payments in html-docs

Pricing is marketing-only. There is no payment processing anywhere in the codebase.

  • What exists: a full /pricing page + landing preview, driven by components/pricing/tiers.ts — Free $0, Starter $10, Pro $29, Business $49/mo, annual toggle (10× monthly), FAQ promising proration.
  • No processor: no Stripe/Paddle/Lemon Squeezy SDK, no checkout or billing routes, no billing webhooks or env vars.
  • CTAs dead-end: every paid tier links to /auth/sign-up; Free links to /developers. Nothing collects money.
  • No plan model: no plan/tier/subscription column in scripts/sql/; no enforcement of page counts, storage, domains, or AI credits — credits appear only in copy.

Net: every account is effectively free and unmetered. To charge, the missing pieces are a processor integration, a subscription/plan column + webhook sync, and quota enforcement in the publish/document server actions.

Debrief

Stripe billing shipped (commit 77f3f50)

  • Checkout, Billing Portal, and webhook sync routes under /api/billing/*; prices resolved by lookup_key (starter_monthlybusiness_annual).
  • New tables billing_subscriptions + ai_usage_events (manual SQL in scripts/sql/, not yet applied).
  • Page-limit gates on publish/API-publish/claim; AI-credit gates on 6 surfaces. Accounts created before 2026-07-03 are grandfathered — never blocked.
  • New /settings/billing usage page; pricing CTAs now start checkout.

Remaining (user): apply the 2 SQL files in Supabase, create the 6 Stripe prices, set STRIPE_SECRET_KEY + STRIPE_WEBHOOK_SECRET locally and on Vercel, run the test-mode E2E.

How to steer: select any text on this page and leave a comment. The session reads unresolved comments between turns, acts on them, and resolves them as acknowledgment. Anchor comments to the plan, the diff, or the deliverable for precise feedback.