Introduction

primo is a free and open-source CMS designed for smaller sites/webapps like landing pages, blogs, brochure sites, etc. It's a lighter approach to content management which doesn't handle hosting the site, but instead uploads a static site to a connected web host (Vercel, Netlify) or Github.

Project Status

Primo is currently in late Alpha. We would advise it not yet be used for client-facing websites until we reach Beta in mid 2022.

Comparison

Compared to other monolithic CMSs like WordPress, Drupal, and Joomla, primo is a much lighter, more integrated alternative. New sites can be created instantly, hundreds of sites can be managed from the same server, and sites are modified one component at a time from an embedded code editor (as opposed to setting up a framework and local development environment).

How it works

Every primo site is stored in a simple JSON file with basically this structure:

{
   pages: [{
      id: 'index'
      sections: [
        {
          id: 'iejd93',
          type: 'component'
        },
        {
          id: 'kaoei4',
          type: 'content'
        }
      ]
      pages: [...]
   }],
   components: [{
     id: 'header',
     code: {
       html: '<h2>{title}</h2>'
       css: '',
       js: ''
     },
     fields: [{
       id: 'title'
       type: 'text'
     }]
   }],
   content: {
      en: {
        index: {
          iejd93: {
            title: 'hello'
          },
          kaoei4: '<h2>and welcome</h2>'
        }
      },
      es: {
        index: {
          iejd93: {
            title: 'hola'
          },
          kaoei4: '<h2>y bienvenidos</h2>'
        }
      }
   }
}

primo's visual editor is essentially a UI layer that interacts with this site object, which it then uses to build static HTML, CSS, and [nearly empty] JS files and uploads them directly to a configured static server or Github.

primo includes an embedded development environment that enables devs to modify components instantly in a robust component editor. It also includes professional, pre-built components/themes which adapt to the theme of the site (set in the site's CSS).

Powered by Svelte

primo's power comes from Svelte, the underlying framework used to build primo components and compile websites. Although called a framework for the sake of simplicity, Svelte is actually a language that extends standard HTML, CSS, and JS and compiles into standard HTML, CSS, and little to no vanilla JavaScript (depending on how much is used in the component). As far as frontend technologies go, none comes close to Svelte in terms of approachability, simplicity, and capability, making it the ideal engine for primo (as well as the ideal engine to build primo itself).