Bowler - A RESTful, Multi-Channel ready Scala Web Framework
Bowler is a RESTful, multi-channel ready web framework in Scala, 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.
If you want to get started quickly, please check out the manual/documentation that has lots of code examples, use the sbt quickstart or have a look at the sample application!
Questions? Ideas? Want to contribute? Join our Google Groups mailing list and/or checkout the code on GitHub!
If you want to keep up to date with the latest on Bowler, follow us on Twitter or check out the blog of the author/founder of Bowler
- RESTful URL routing based on Scalatra, supporting named parameters, wild card URL's or regex URL's (see more at the Scalatra URL)
- Uses Scalate for templating: use any templating dialect supported by Scalate, such as Mustache, SSP, Jade or Scaml.
- HTTP Request to object mapping with ease: Bowler comes with out-of-the-box support to easily map from requests to arbitrary objects and back while respecting RESTful principles.
- Composable UI's with ease: Bowler provides the means to easily compose- and re-use UI components with a minimum of overhead. In terms of approach, it lies somewhere in-between Apache Wicket Components/Panels and Lift snippets, but with it's own flavour and based on Scalate.
- 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?
- Localisation & multi-channel support out of the box: localisation of everything from UI to validation error messages is supported out of the box, as is adapting the view and layout based on request characteristics, such as User-Agent (you may want to render a web page differently for an iPhone compared to a desktop browser).
- Sensible defaults, but ultimate configurability: Bowler has sensible defaults out of the box that you may never change. But it also allows you to extend- hook-in and adapt the framework at any point you choose: Don't like the validation framework? Use another one! Prefer a different rendering mechanism to Scalate? Change it!
We have a Sbt quickstart application available, which is a pre-setup sbt project with a skeleton Bowler app. For instructions on how to get this, please visit the bowler-quickstart GitHub page
The below Simple Build Tool (sbt)
project file should give you all you need to start using Bowler if you're a Sbt user (place the file in your project/build folder). It should download all the dependencies required from Sonatypes public repo once you run the sbt "update" command.
If you're using Maven, you need to add the following into your pom.xml (in addition to the other Scala stuff you may want to set up for compilation):
You can get the full Bowler source code from the Bowler GitHub repo
The easiest way to get a quick introduction to Bowler is probably to check out the Example application in the Bowler GitHub repo
This comes fully functioning out of the box with a number of examples of of Bowlers main features, and also comes with relatively well documented and commented code.
You may also want to start browsing the Manual
However, to give a taster (from the example app) of what the core logic and a Controller in a Bowler app might look like, here's an example:
Bowler has a Google Groups mailing list
where you can ask questions, give ideas, feedback and contributions.