Changelog

Building it, every day.

A daily log of building this in public. Each entry is what shipped that day. The repo's private until v1 lands, but every architectural decision is here.

  1. Editor top bar + billing portal + this page

    • Owners get a top bar: view site, manage billing, sign out
    • Stripe Customer Portal wired at /api/stripe/portal
    • Privacy notice + this changelog page
    • GitHub Actions CI — every push runs the test suite
  2. Scraper + admin lead tool + public /start

    • Linktree extractor (parses __NEXT_DATA__, falls back to DOM)
    • Generic landing-page extractor (cheerio + OG/meta tags)
    • OKLAB palette derivation in Node (mirrors the CSS color-mix)
    • Admin /app/admin/leads — paste URL, get a preview link to send
    • Public /start — same form, prospect-initiated, IP rate-limited
    • Test suite: 26 tests passing (unit + live smoke)
  3. Editor — React island with live preview

    • shadcn admin scoped to /app/me, owner-only via Supabase session
    • Form panel + live preview iframe, 1s debounce on edits
    • POST /api/config/patch — Zod-validated, audit_log diff written
    • postMessage refresh from parent to iframe on each save
  4. Self-serve claim flow

    • Stripe Checkout via the claim banner
    • Webhook handles checkout.session.completed + subscription.updated/deleted
    • Atomic tenant activation: status → active, user created, magic link sent
    • Resend transactional email with editorial template
    • Auth callback exchanges code for session, redirects to /app/me
  5. DB-backed slug routing + status branching

    • Public [slug] route reads from Supabase + Zod-validates before render
    • Four render branches: preview / active / past_due / canceled
    • Per-tenant theme via inline CSS vars; OKLAB palette derives at render
    • JSON-LD schema.org emission per tenant
    • Seeded 3 demo tenants across verticals (restaurant, salon, fitness)
  6. Template — editorial color-saturated minimalism

    • Fraunces + Inter Tight, OKLAB-derived 5-step palette per tenant
    • 7 section types (Hero, About, Hours, Contact, Links, PricedList, Schedule)
    • Asymmetric layouts, pill UI vocabulary, no stock-photo dependence
    • Demo pages for restaurant + salon to stress the system across hues
  7. Foundation

    • Astro 5 SSR + Tailwind 4 + React (for shadcn islands) + Vercel adapter
    • Supabase + Drizzle, 7 tables with RLS enabled on every one
    • Service-role-only-on-server enforced by a pre-commit grep guard
    • Initial migration: tables, RLS policies, storage bucket, rate-limit fn