meddah / Bowler

RESTful Web Framework based on Scala, built on top of Scalatra & Scalate

Home Page:http://bowlerframework.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bowler - A RESTful, Multi-Channel ready Scala Web Framework with a functional flavor

A RESTful, multi-channel ready web framework in Scala with a functional flavour, built on top of Scalatra and Scalate, with Lift-JSON doing the heavy JSON lifting. The project is built with Simple Build Tool ("sbt")- we intend to further add custom sbt processors in the future to automate boilerplate tasks.

Apologies for the sparse documentation, there is more documentation to come soon!

Design Goals (some of them)

  • RESTfulness - being true to RESTful principles and the intent of the HTTP protocol.
  • Multi-Channel ready - the number of clients is increasing: desktop browsers, smartphones like Android & iPhone, tablets like the iPad, and API's for third parties. Bowler aims to ease targeting multiple platforms at once by maximizing re-use and minimising re-work while allowing Layouts and Templates to be selected based on User-Agent, domain and other criteria.
  • JSON API "for free" - to ease creating dynamic websites with JQuery, or providing partners an API, the default settings give you a JSON API "for free", with JSON rendered to the client based on the View Model you've set and the HTTP "Accept" header being set to "application/json" from the client.
  • Decomposition of the View into "Resource View" & Layout - A consequence and enabler of the above two points, a stricter separation between the Resource View representing the Model you want to display and the Layout you want to surround it with. The idea behind this is explained here: Decomposing the View in MVC - What's In a View?
  • Sensible Defaults - Good to go out-of-the-box with sensible defaults and further extensions/plug-ins in the works for adding functionality.
  • Composability - if you don't like the defaults, pick, choose and combine what you want. Bowler uses a "Micro Architecture" approach with strict code adherence to the Single Responsibility Principle. Adding for instance a different validation framework or different templating mechanism or even entirely different rendering mechanism should be relatively pain free.

Building Instructions

  • Have sbt 0.7.5RC0 or later installed
  • Pull and build the Recursivity Commons project, then do a "publish-local" on that project, as Bowler depends on this (we will make everything available in a Maven repo soon enough!)
  • Go into the "core" folder, run sbt and the "update" command in sbt to download all dependencies
  • Place the scala-compiler.jar in the "lib"-folder, this is a dependency of Scalate, and doesn't get automatically downloaded due to a bug in sbt.
  • Now you're ready to build and go!

About

RESTful Web Framework based on Scala, built on top of Scalatra & Scalate

http://bowlerframework.org

License:BSD 3-Clause "New" or "Revised" License