How it works

Primo is a SvelteKit application which uses Supabase as a backend for authentication, a database, and file storage. Sites, pages, and Blocks are all stored in a Postgres database as individual rows containing code, fields, and content.

Rollup and the Svelte compiler are used to compile page blocks into Svelte components (alongside PostCSS for nesting) and to build the static files for the deployed website, which Primo then uploads to Github.

The website bundle consists of HTML files containing static HTML (i.e. content that shows up even with JS disabled) and embedded CSS. Blocks containing JS are rendered as HTML and hydrated by a shared vanilla JS file.

Hear about future updates, including:

  • Using it headless alongside SvelteKit, NextJS, etc.

  • Design fields to give content editors predefined style options.

  • Cloud functions for writing backend code from Primo.