Skip to content
This repository

Static Site Non-Framework

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 lib
Octocat-spinner-32 .gitignore
Octocat-spinner-32 LICENSE initial commit January 15, 2010
Octocat-spinner-32 Rakefile
Octocat-spinner-32 VERSION
Octocat-spinner-32 frank.gemspec


Inspired by Sinatra's simplicity and ease of use, Frank lets you build static sites using your favorite libs, painlessly. It uses Tilt, so it comes with support for Haml & Sass, Builder, ERB, Liquid, & Mustache.

Frank also supports CoffeeScript for writing JavaScript in style, and LESS is planned for the near future.


Create a new project with:

$ frank <project_name>

Then start up the server with:

$ frankup

 Frank's holdin' it down...

And you're ready to get to work. Feel free to use as much or a little of the available libs as you please. Frank works just as well with Mustache / CSS / JavasScript as Haml / Sass / CoffeeScript.

Views & Layouts

All of your templates, and less/sass/coffeescript go into <project>/dynamic, by default. You are more than welcome to organize them into subfolders if you've got lots.


Writing views is simple. Say you've got a blog.haml, in <project>/dynamic just browse to and your view will be parsed and returned as html.


Layouts are also simple with Frank. By default, just create a layout.haml (or whichever language you like best), that contains a yield, and any views will be inserted into it at that point.

Multiple layouts are also easy. In your settings.yml, do something like:

    - name: blog_layout
      only: [blog]
    - name: normal
      not: [blog, ajax]

This tells Frank to use blog_layout.haml for /blog, and normal.haml for everything but /blog' and '/ajax.

Partials & Helpers

Frank comes with a helper method, render_partial, for including partials in your views.

In addition, you can also easily add your own helper methods to use.


To create a partial, make a new file like any of your other views, but prefix its name with an underscore.

For example, if I have a partial named _footer.haml, I can include this in my Haml views like this:

= render_partial 'footer'


Helper methods are also easy. Just open up helpers.rb and add your methods to the FrankHelpers module; that's it. Use them just like render_partial.

GET/POST params

Sometimes it's nice to include user input in your mock-ups. It's especially handy when mocking-up Ajax-driven elements. For this reason, the request and params are available in your templates.

For example, to use a person's name submitted through a form you might do:

%h1= "Hello, #{}"


In settings.yml, you can change your folder names, and server port & host name. Check the comments there if you need help.

Once you've gotten comfortable with Frank, you will probably no longer want the example files included whenever you start a new project. You may also have preferred folder names, and languages that you always want to start projects with.

To do this, create a new base project. Then just copy your base project to ~/.frank. This folder will then be copied for you whenever you run the frank command.



$ gem install frank
Something went wrong with that request. Please try again.