Zvessa docs

Blocks

A block is data: { id, kind, props?, children? }. Every kind is described once in convex/lib/blocks.ts (what it's for, its props, whether it holds children). That one list feeds:

Adding a block #

  1. Add its description to BLOCKS in convex/lib/blocks.ts.
  2. Add its renderer to RENDERERS in src/components/Renderer.tsx.
  3. Nothing else: HQ and the AI pick it up from the list.

Keep blocks abstract: a stat is a number with a label, not a "streak counter".

Today #

stack, heading, text, image, button, list, card, stat, divider, miniapp, and the HQ system blocks hq.proposals, hq.history, hq.blueprint.