Nesta is a lightweight, file-based content management system and static site generator written in Ruby on the Sinatra web framework, for developers and writers who want blogs and content sites stored as plain text files rather than in a database.
What it is
Nesta is a content management system and static site generator written in Ruby and built on the Sinatra web framework. Content is authored as files on the author's own machine: Markdown or Textile for ordinary text, with the option to drop into HTML or Haml when more control is needed. Sass appears among the project's topics, so styling is handled in the same file-based workflow. There is no database anywhere in the stack, and publishing means putting those files online, with Git recommended but not required.
The concrete thing it replaces is a database-backed CMS. Instead of editing posts through an administrative web interface and having them written into a database that must then be backed up, migrated and kept running, Nesta keeps every page as a text file on disk that can be versioned, diffed and reviewed like source code. It solves both halves of that problem at once: it can render HTML on the server as a traditional content site, or it can build a static version of the whole site that is served as plain files.
Key capabilities
- Authors content in Markdown or Textile, with HTML or Haml available for pages that need finer control.
- Stores all content in text files on the hard drive; the README states plainly that there is no database.
- Publishes by putting files online, with Git recommended as the transport, though not required.
- Deploys two ways: as a static site through
nesta build, or by rendering HTML on the server with the mr-sparkle development server available via bundle exec mr-sparkle config.ru.
- Scaffolds a new site with the
nesta new mysite.com --git command, which can initialise a Git repository at the same time.
- Reads site configuration from
config/config.yml, which ships with working defaults that the README advises tweaking before getting far.
- Keeps the core lean by pushing new functionality into plugins, with the README steering feature proposals toward an issue and a plugin discussion first.
- Runs a full test suite through a GitHub Actions workflow, exposed as a tests badge.
Who uses it and how
- Individual writers and bloggers who want to edit posts in a text editor and keep the whole site in one version-controlled directory tree.
- Developers running a local preview at
http://localhost:8080 via the mr-sparkle dev server while editing files in content/pages.
- Teams and individuals who commit content changes to Git and deploy from the repository, since Git is the recommended publishing path.
- Static-site publishers who run
nesta build and host the generated output as plain files, avoiding a live Ruby application in production.
- Operators who prefer server-side rendering, deploying behind a web server as described in the project's deployment documentation.
- Plugin authors extending the core rather than adding features upstream, following the project's plugin guidance.
Getting started
Install Ruby, then the gem with gem install nesta, generate a site with nesta new mysite.com --git, enter the directory and run bundle to install dependencies, and start the development server with bundle exec mr-sparkle config.ru. Documentation for writing content, deploying, and plugins lives at nestacms.com.
How it compares
No comparable paid or hosted products are named in the facts supplied for this entry, and no similar tools are named either, so Nesta stands alone in this registry at present.
When to use it — and when not to
A self-hoster must operate a Ruby runtime, install the nesta gem, and manage dependencies through bundle; the payoff is that there is no database, no SMTP configuration and no administrative backend to keep patched. Anyone who needs a browser-based editing interface, non-Ruby hosting, or a contributor workflow that does not run through Git and a text editor should look elsewhere, because those are not part of the model here. The licence is MIT and the repository shows recent activity with only five open issues, but the feature pipeline is deliberately narrow: the maintainer asks that new functionality be discussed as an issue first and may redirect it into a plugin, so anyone needing upstream changes should expect a slower path than dropping a direct patch.
project readme (upstream, from github) — read inline
File Based CMS and Static Site Generator
Nesta is a lightweight CMS for building content sites and blogs, written in
Ruby using the Sinatra web framework.
- Write your content in Markdown or Textile, in your text editor (drop into
HTML or Haml if you need more control)
- Files are stored in text files on your hard drive (there is no database)
- Publish changes by putting these files online (Git recommended, not required)
- Deploy either as a static site (SSG) or by rendering HTML on the server (SSR)
Installation
Begin by installing Ruby, then the Nesta gem:
$ gem install nesta
Use the nesta command to generate a new site:
$ nesta new mysite.com --git # a git repo is optional, but recommended
Install a few dependencies, and you're away:
$ cd mysite.com
$ bundle
You'll find configuration options for your site in config/config.yml. The
defaults will work, but you'll want to tweak it before you go very far.
That's it — you can launch a local web server in development mode using the
mr-sparkle dev server:
$ bundle exec mr-sparkle config.ru
Point your web browser at http://localhost:8080. Start editing the files in
content/pages (see the docs on writing content for full instructions).
You can either deploy it behind a web server, or build a static version of
your site:
$ nesta build # but see config.yml for build settings
Support
There's plenty of information on . If you need some
help with anything feel free to file an issue, or contact me on Mastodon
(@gma@hachyderm.io).

Contributing
If you want to add a new feature, consider creating an issue so we can
have a chat before you start coding. I might be able to chip in with ideas on
how to approach it, or suggest that we implement it as a plugin (to keep Nesta
itself lean and simple).
-- Graham