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 in Public Beta as of October 2022. It's free of major bugs and stable enough for professional as well as personal projects, though there may still be some light breaking changes in the future.

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

Primo is a SvelteKit application which can be deployed as a free Vercel/Netlify/etc. project or installed as a Desktop application (running Primo in Electron). Primo websites are saved in a simple JSON file which contains its pages, components, and internationalized content, and they're published as HTML, CSS, and optional JS files to a static host like Vercel or Netlify, or a Github repository.

Site Structure

{
   pages: [{
      id: 'index'
      sections: [
        {
          id: 'iejd93',
          type: 'component',
          componentID: 'ep90d'
        },
        {
          id: 'kaoei4',
          type: 'content'
        }
      ]
      pages: [...]
   }],
   components: [{
     id: 'ep90d',
     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 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).