LeanWeb is a minimal hybrid static / dynamic web framework.

LeanWeb is a very lean MVC framework on top of Rack and Tilt that works for static and dynamic content alike. The idea is to build static websites first, but not having to rely on dirty tricks for adding dynamism when needed.

LeanWeb supports every filetype that Tilt supports, when file extension is unknown text will be treated as ERB. Default installation adds HAML as dependency, but you can remove it from the Gemfile.

SuperB support for Org mode files can be achieved by installing the tilt-emacs_org gem. Notice that it requires Emacs installed.

Developing with LeanWeb

Getting started

Install the leanweb gem on your system.

Create a new project with leanweb new <project-directory>.

You're ready to go!

  • Place your static files on public/
  • Place your controllers on src/controllers/ (inheriting from LeanWeb::Controller)
  • Place your views on src/views/
  • Setup your routes on routes.rb, check API documentation to know how
  • Setup your Rack middleware on config.ru

You can run a development server with rackup.

API documentation

API documentation is in YARD, you can access a web version on https://leanweb.hacktivista.org. Specially relevant are docs on Route#initialize, Controller#render_response and Controller#create_template.

Environment variables

  • LEANWEB_ROOT_PATH defines the route to the project, defaults to current directory.
  • RACK_ENV if set to development, serves static files and routes too, else it will only serve dynamic routes.

You'll not need to configure neither with the default configuration.


Build static files with rake build. This might be all you need to do for static websites.

If your website has dynamic routes, serve with rackup -E deployment. Then configure your webserver to serve dynamic routes by listening to port 9292 and static files on public/.


Source code is available on https://git.hacktivista.org/leanweb.

Bug reports and patches are welcome on https://lists.hacktivista.org/hacktivista-dev.


Only tested contributions are accepted. Run tests with rake test.

Source based installation

Simply run rake install or rake install:local.


LeanWeb is libre software released under the Hacktivista General Public License 0.1 or any later version. Which means it works exactly as the GNU AGPL license but every copy counts as distribution, even for "internal usage".

To comply with license terms, if you modify this software you must prominently provide the means to access the source code of your version of the software easily and free of charge to any person that has access to it, even users which access through a network (i.e. web browser).

Any modification or inclusion of this source code will inherit the same license, that is, it can't be sublicensed.

At this time I don't recommend the use of this license for non-derivative works, since it's a work in progress expecting changes and validation by competent lawyers. On derivative works please remember to license it under current version "or any later version", so you can be sure your code is covered by the legally safest version.