Introducing Alinea 🚀

For about 8 years we've been using a custom built CMS to power the websites, apps and services we build. Over time we've seen our development workflow move from PHP to JavaScript cloud deployments. As it was time for a fresh start to shake off some technical debt, achieve new goals and open source everything we started work on a new content management system little over a year ago. Today an alpha version of Alinea is available to the public.


A quick intro

Alinea is installable from NPM and bundles a few utilities to structure, manage and query content. The dashboard loads your configuration and lets you edit content based on a custom schema which can be composed of rich set of fields - or added to by building a custom field (which is just some configuration and a React component).

Content is structured hierarchically, following configuration settings to determine which page can have child pages. We've noticed that structuring content this way comes very natural for websites. Presenting the editor with a tree of pages that follows the website's navigation makes the editing experience so transparent it requires zero training. Have a look at the demo to judge for yourself.

Published content changes persist on the file system in json format (or markdown in the future), allowing content to be version controlled with git. The dashboard can be hosted with a backend which authorises users, keeps drafts and pushes changes to Github. It can be self-hosted or deployed in a few clicks with our cloud service.

Getting started

More features

While we're still hard at work at stabilizing the features below they'll give an overview of what we're trying to achieve.

  • No framework lock-in
    Use any web framework, static site builder or ad-hoc script to display or transform data that is editable in the CMS.

  • Embedded database
    Content is indexed in an embedded SQLite database. The database is deployed with your code and can be queried during build time or at runtime with Node.js or inside an edge or serverless function. This will also enable us to provide full text search out of box without requiring an extra service.

  • Fully typed
    Configuration and content is fully typed when making use of TypeScript. It's a great feeling to be able to see what impact configuration changes have on your codebase.

  • Collaborative
    The editing experience is built on Yjs primitives, which will allow multiple editors to collaborate without merge conflicts. We'll setup a WebRTC provider in the near future.

  • Internationalization
    Content can be published in multiple languages and regions. We're polishing the UI that lets you switch and compare between languages.

  • Host anywhere
    The Alinea dashboard can be exported as a handful of static assets and a serverless function to be deployed to any cloud environment, or as a simple Node.js process.