Skip to main content
You build a Primo site from pages. Each page uses a page type to define its layout and editing options. You create reusable blocks, then place them on pages as sections with their own content.

How the pieces fit together

Blog Post and Hero are example names you choose. Primo supplies the page, block, and field controls; you build or import the templates and designs.

Sites

A site contains its own pages, page types, blocks, and shared settings. Create one from a marketplace starter, copy an existing site, or start blank. A starter includes code and sample content you can change. You can edit a site before it has a public address. Assign a domain when you want to serve it to visitors.

Page types

A page type defines:
  • Page fields: Values each page can store, such as a title, author, or article body.
  • Starting layout: Header and footer sections shared across pages of the type, plus body sections copied into each new page.
  • Available blocks: The blocks editors can add to the body.

Choose page types for your content

You can use a page type for specific content, such as a blog post, or for general pages, such as About and Services. These names are examples, not built-in presets. Pages with similar layouts can use the same type; you do not need a separate type for every page.

Fixed or flexible body layouts

The available-block list controls how much editors can change the body:
  • With available blocks: Editors can add those blocks, remove sections, and change their order.
  • With no available blocks: Editors can edit the existing content but cannot add, remove, or reorder body sections.
Header and footer structure is set in the page type. Ordinary content in these sections is shared across pages of that type. Body content belongs to each page. Changes to the starting body template apply to new pages; they do not replace existing pages’ body sections. See Understanding slots for the full layout behavior.

Pages

A page is one use of a page type, with its own content. For example, two articles can use your Blog Post type while having different titles and bodies. Create pages from Pages in the toolbar. Choose a type, enter a name and slug, then fill in its fields and sections. The slug is a segment of the page’s URL. A page with slug first-post under a parent with slug blog has the URL /blog/first-post. The homepage is the root page at /. Naming a page or page type “Homepage” does not make it the root page. Page fields only appear on the rendered page when your code uses them. For example, create a Page Field reference in a block to display a page title, or add metadata tags to the page type’s Head HTML for search engines. See Working with fields.

Blocks

A block combines Svelte markup, styles, and logic with fields editors can fill in. For example, you can build a Hero block with a headline, image, and link. You control how those values appear.

Library blocks and site blocks

  • Library blocks are reusable starting points stored in the server’s block library. Adding one to a site creates an independent copy.
  • Site blocks belong to one site. Editing their code updates the sections using them in that site; publish to update the public pages.
Editing a library original does not update existing site copies. See Using the component library for reuse and update workflows.

Sections

A section is one placement of a block with content for that placement. If you add the same Hero block twice, each section can have a different headline and image while using the same code. For body sections, changing one section’s content leaves the other sections’ content alone. Header and footer sections are shared by pages of the same type.

Fields

Fields make content editable. You choose supported types such as Text, Image, Link, and Repeater, then give each field a label and key. Names such as logo, title, and headline are examples you define. To use site or page content in a block, add a Site Field or Page Field reference and select its source. Matching names alone do not create a connection. See Field types for the built-in types and their values.

Working with content editors

As a developer, you create the blocks, fields, and page types. Content editors create pages, fill in fields, and arrange body sections where the page type allows it. They cannot edit code or redefine the page types. Inline edits and layout changes save automatically. Changes in editor dialogs require Save. Publishing makes the site’s saved changes public, including changes on other pages. For example, you can create a Blog Post type and a block that displays its title and body. An editor then creates articles from that type and fills in the fields. Both articles keep the layout you defined, with their own content.

Next Steps

Quickstart

Build your first site and see these concepts in action.

Your First Site

Step-by-step guide to creating a complete site.

Architecture

Learn how Primo works under the hood.

Defining Page Types

Set up page types to control structure and available blocks.