Blume is a dynamic static site generator. It lets you compile certain Sinatra projects into a static site.
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.



Blume is a static site generator meant to be used with Sinatra. Blume is simmilar Jekyll in that content is stored in simple YAML + markdown text files. However, with Blume, there is an intermediate in which you read your text files into a MongoDB and develop your site "dynamically" using Sinatra and MongoDB. After the site is developed, you compile it into a self-contained directory which contains a static version of your site with optional compressed versions of all pages.

There may be a bit of additional overhead with learning Blume since you must also use Sinatra and MongoDB but if these are tools you like and/or you would simply like to have more freedom with the development of your static site, Blume may be a good choice for you.


To install blume:

$gem install blume

You also need MondgoDB installed and running.



Blume uses a few conventions, most are optional and can be over-ridden but there is one convention that is necessary. All internal URLs must be root-relative. For instance, "/, /sub, sub/sub..." not ",". This behaviour may change in later releases but it wasn't necessary to implement absolute URLs for my needs so it has taken a low priority.


It will be easiest if you follow the Sinatra default location for your public files (.css, .js, etc.) in the 'public' folder within your project. In addtion to this, the default folder structure for Blume is to keep your content in the 'content' folder and to output the static site to the 'site' folder. The default folder structure for a Blume project could therefor look like this

    |- content
    |- public
    |- site


posts folder structure and date structure

TODO: Write usage instructions here



  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request