Simple silex blog
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Code Climate

Skimpy is a file based blog that doesn't require any generating.

It's mainly built for developers. I built it because I want a simple file based blog that doesn't require any generating.

Why you might like it (or not like it)

  • Creating a post is as simple as creating a new file
  • It supports categories and tags
  • It has no database
  • It doesn't require any generating
  • It's fast
  • It has zero default styling
  • It's built with Silex

Status of Project

I haven't tagged a release because I'm not even considering it alpha yet. But it does work and you can use it now if you want. I will tag a release when the docs are complete.

Installation & Setup

Install through composer or by downloading the zip and running composer update.

  1. composer create-project jtallant/skimpy -s dev
  2. cd into the project
  3. run php -S localhost:4000 -t web/
  4. Visit url http://localhost:4000

Creating a blog post

  1. You simply create a new file inside content/somedir/ and give it the required metadata

Some conventions you should be aware of:

  • The name of the file is the slug of the blog post/page (the uri).
  • The name of "somedir" in content/somedir/ determines which twig template to use. In this case, templates/somedir.twig would be used as the template if it exists, else templates/default.twig would be used.
  • There is no difference between a post and a page other than they use different templates.
  • The name of a taxonomy file determines its slug and template. categories.yaml, uri => categories, template => categories.twig.
  • If a taxonomy has no template, it will not have an archive (listing of term names). /categories (404). /categories/tag-name is still public (200 OK).
  • Metadata "date" defaults to filemtime if not specified.
  • Metadata "title" defaults to titleized filename if not specified.
  • The metadata "date" value must be quoted.
  • You can name a content file to use the parent dir as the content file slug. This would be useful in a scenario such as content/our-team/ where would be an archive of team members and the uri would be /our-team. You could have our-team/, our-team/, and our-team/
  • The metadata must be valid YAML.
  • Every content file must include a metadata separator even if there is no metadata.
  • The metadata separator must be exactly 3 hyphens.


  • URIs according to W3C are case sensitive. This means that you will get a 404 if the casing is incorrect for some uri. You can use mod_rewrite to 301 redirect any URIs containing uppercase characters to all lowercase characters.


  • Placeholder content explains skimpy usage.
  • Contact Form
  • Travis CI
  • Documentation


  • Built in JSON API
  • Contact form (service provider)