Page structure: the block types and how to compose a page
The seven block types PankoBlitz supports and how to compose a page from a content map and a block_order array.
A PankoBlitz page has no page builder canvas and no drag handles. It is a data structure: an ordered list of typed blocks, and a theme that decides how every one of them looks. You pick the blocks, you set their order, and you write the content. That is the whole model, which is why an agent can build a page as fast as it can write JSON.
PankoBlitz gives you seven block types: hero, logo_cloud, features, stats, testimonials, faq, and cta. You compose a page as a content map plus a block_order array that fixes the sequence. Each entry is keyed by type and index, like hero:0 or features:0. You choose which blocks to include and the order they render in. The theme handles all styling, so your job is structure and copy, not CSS.
The block model
A page is two things that travel together. The content map holds each block's data under a key like hero:0. The block_order array lists those keys in render order, for example ["hero:0", "features:0", "cta:0"]. The array is the source of truth for sequence. Reorder the array and the page reorders.
{
"block_order": ["hero:0", "features:0", "cta:0"],
"content": {
"hero:0": { "headline": "Ship faster", "button_text": "Start", "button_url": "/signup" },
"features:0": [ { "icon": "zap", "title": "Fast", "description": "Sub-second builds" } ],
"cta:0": { "headline": "Ready?", "subtext": "Free tier included", "button_text": "Go", "button_url": "/signup" }
}
}
The seven blocks
hero
The top of the page. Fields: badge, headline, subheadline, button_text, button_url, secondary_text, secondary_url, text_align. The secondary pair gives you a second link next to the main button, for a "read docs" alongside "sign up".
logo_cloud
A row of customer or integration logos. One field: logos, a list. Use it directly under the hero as social proof.
features
This block is an array of items, not an object. Each item is { icon, title, description }. Add as many items as you need; the theme lays them out in a grid.
stats
A number row. Shape: { heading (optional), items: [ { value, label } ] }. Good for uptime, customer counts, or throughput figures.
testimonials
An array of items, each { quote, author, role, avatar (optional) }. Leave avatar off and the theme falls back to a text-only card.
faq
Shape: { heading (optional), items: [ { question, answer } ] }. This maps cleanly to an FAQ section and is worth including on any page that answers a repeated question.
cta
The closing call to action. Fields: { headline, subtext, button_text, button_url }. One button, one destination.
A sensible default order
If you are not sure where to start, use this sequence: hero, features, stats, testimonials, faq, cta. It opens with the pitch, backs it with what the product does, proves it with numbers and quotes, handles objections in the FAQ, and closes with the ask. Set that as your block_order and fill each block's content.
- hero: the pitch and primary action
- features: what it does
- stats and testimonials: proof
- faq: objections
- cta: the ask
What this does not do
The block set is fixed at these seven. There is no custom-HTML block, so you cannot drop in arbitrary markup, an embed, or a script. If your page needs a section that none of the seven cover, PankoBlitz cannot render it today. Order is set at create or update time, not edited live in a canvas: you change the page by sending a new block_order and content, not by dragging. And styling belongs to the theme, so two sites with the same blocks will look different depending on the theme you pick.
Next step
Decide your theme before you write copy, since it changes how much text each block can carry: see choosing a theme. Then send your content and block_order in one call with the REST API guide.