BangBang

BangBang is a lightweight Sinatra web VC stack. Currently, it doesn't have strong opinions, to allow flexibility to discover good idioms.

Basic Layout

BangBang has a basic app structure, similar to Rails. Right now, no conventions are "forced" on you. This is done to allow experimentation and keep things lightweight.

You pick the model library.

Right now there are no generators.

BangBang::Controller

BangBang::Controller is a subclass of Sinatra::Base. It's meant to provide an encapsulated unit of functionality within your app. How you group your actions is up to you.

NamedRoutes

BangBang uses the named-routes library.

Here is a good pattern to follow:

module MyApp
  Controller.define_routes do
    def root; end
    get path(:root, "/") do
      "Hello World!"
    end

    def about_us; end
    get path(:about_us, "/about-us") do
      view("/about-us.html.ms")
    end
  end
end

Defining the route methods allows certain code editors & IDEs to locate the definition of action.

uris.about_us # /about-us