Page Blocks
Landing pages from validated JSON, rendered as static HTML
Each page is a JSON document in the repo. A registry of typed blocks (a zod schema plus a React Server Component each) validates and renders it at build time, so visitors get static HTML with JavaScript only for the video, form and countdown. The editor builds its forms from the same schemas.
Demo pages (3)
- /p/launch·en·dark
Tally 2.0 launch
Tally 2.0 turns tracked hours into a sent invoice in under a minute. Recurring invoices, payment reminders and clean exports. Launch pricing this week.
11 blocks: hero, logos, video, features, countdown, pricing, richText, testimonials, faq, cta, footer
- /p/saas·en·light
Stockroom
Stockroom keeps stock counts in sync across your online store, marketplace listings and the shelf, so you stop selling things you don't have.
8 blocks: hero, logos, features, pricing, leadForm, faq, cta, footer
- /p/webinar·pt-BR·dark
Aula ao vivo: checkout que não perde venda
Aula gratuita e ao vivo sobre os pontos onde funis de venda perdem pedidos: checkout, Pix, webhooks e e-mails de recuperação. Toda quinta, às 19h.
7 blocks: hero, countdown, richText, leadForm, testimonials, faq, footer
Block registry (12)
Hero
heroHeadline, supporting text, call to action and an optional image.
Server only, no JS
Logos
logosRow of customer or press logos (image or text wordmark).
Server only, no JS
Features
featuresGrid of icon, title and short text.
Server only, no JS
Video (VSL)
videoPoster image with a play button. The YouTube/Vimeo player loads only after a click.
Client component
Testimonials
testimonialsQuotes from customers or students.
Server only, no JS
Pricing
pricingPlans with price, feature list and a highlighted option.
Server only, no JS
Countdown
countdownFixed deadline, or evergreen: N hours from each visitor's first visit (kept in a cookie).
Client component
Lead form
leadFormName / email / phone capture that posts to /api/leads.
Client component
FAQ
faqAccessible accordion built on native <details>, no JavaScript.
Server only, no JS
Rich text
richTextMarkdown subset: headings, bold, italic, links, lists, inline code. No raw HTML.
Server only, no JS
CTA band
ctaFull-width band with a headline and a button.
Server only, no JS
Footer
footerBrand, short text, links and legal line.
Server only, no JS
What the sandbox does
- Editor drafts are saved in your browser's localStorage. Export the JSON and commit it to publish.
- Lead form submissions are validated and kept in server memory. See them (masked) at /api/leads.
- Click tracking goes to an in-memory sink at /api/events. Both reset when the server restarts.