Sprinkles Is Not A Content Management System
Sprinkles departs from the classic CMS model that you may know from platforms such as WordPress, Drupal, or Joomla. Those platforms tightly integrate content management (creating, editing, and structuring web content) and content presentation (transforming raw web content into rich HTML websites). These two parts are often referred to as “back-end” (management) and “front-end” (presentation), but both are inseparable parts of one big package. This means that you cannot easily use, say, a Django backend with a WordPress frontend; it’s all or nothing.
Tight integration also means that security issues in the front-end part can (and often do) allow escalation into the back-end part, allowing attackers to gain access to the administrative parts of the site more easily than they should.
Sprinkles Is Not A Static Site Generator
Static site generators like Jekyll solve the above problems nicely, but they have downsides of their own: there is a build step, and after that step, everything is static. This makes things secure, and easy to deploy, but it means you cannot have any dynamic content.
Sprinkles Is A Content Presentation System
Sprinkles takes the best from both worlds. Just like a CMS, it interprets your raw content and templates on-the-fly, so there is no build step, and things can be dynamic; and just like with a static site generator, you get to use whichever tools you want to manage your content - move your files around with a file manager, or use a command line, put things in a database, pull things from a RESTful API; it’s all fine.
The core of a Sprinkles site is just a YAML file, where you define:
- Routes (which requests go where)
- Data Sources (which data to load for a route)
- Templates (how to turn your data into HTML)
Once you have this set up, you can use your favorite tools to produce content, and upload it to your server. Sprinkles can access local files, HTTP web servers, and SQL databases, and it understands many data formats, including Markdown, Textile, ReStructuredText, HTML, docx, plain text, JSON, YAML, …