Bootzooka Reloaded - Bootstrap your AngularJS & Scalatra apps!28 January 2014 | Michał Ostruszka
Do you remember our tiny bootstrapper project called Bootzooka? I've got great news for you - Bootzooka has just got a major update! Read on to find out what's new and what's been changed.
What's Bootzooka about?
Let's start with a few words of introduction. Bootzooka is a kind of scaffolding project we've created and use at SoftwareMill whenever we start a new project that matches Bootzooka's technology stack. We have several succesful projects built upon Bootzooka at Softwaremill and know about several more existing outside of our company.
Bootzooka consists of highly opinionated tools we use as the default choice for our new projects. The backend is written in Scala exposing JSON API via Scalatra and MongoDB takes care of the storage. The browser part is a modern Single Page Application built on AngularJS and Twitter Bootstrap by default.
Bootzooka itself has very few "production" features; we believe that its greatest strength lies in the complete tooling and automation around the project stack. You don't have to spend time configuring the build tools, dependencies, the project structure and so on. Bootzooka brings it for free! Just load your Scala-based modern web application into Bootzooka and see it fly!
The New & The Changed
- concatenation of production assets to minimize the HTTP requests
- live reload support - whenever you change a file it automatically refreshes your browser which means no more F5 key abuse during development
- running tests on a headless WebKit browser (PhantomJS)
- autotest feature - whenever you change a file, the tests are run so you can be sure you are good to do the next step
- code quality check with JSHint - again, JSHint is fired on a file change and checks your code quality
Grunt has a huge number of plugins so if you ever need anything specific in your project there is high chance that Grunt has a plugin for that.
Although we've significantly changed the project's layout as described above, nothing has changed in the final build and deployment. You still get a WAR archive as a result of the
package command in SBT.
This archive bundles together the server side and frontend parts so you can drop it into your servlet container - as usual, nothing changed here.
We've also thinned Bootzooka a bit. What does it mean? Well, we want Bootzooka to be kind of starter kit for the new projects; you can take it and start building your stuff on it without any need to remove code or features. Right now Bootzooka is simplified down to the following features:
- User registration and login/logout
- Password recovery
- Simple profile management
Not so much, huh? It may sound so, but in fact you get a complete backend layer for that (ranging from talking to the DB to exposing the JSON API) together with a complete frontend solution (AngularJS application structure with a basic security and server communication). It means that you can start building your application on it right away as there is a high chance that your project needs authentication and user management. Other features are up to you and Bootzooka doesn't stand in your way of building them right.
As for the versions of building blocks, the following are now in Bootzooka:
- Scala - 2.10
- Angular 1.2.6
- MongoDB - 2.4
- SBT - 0.12.1
- Grunt.js - 0.4.2
There were several changes in Bootzooka that we believe will make the bootstrapping of new, modern web application projects even easier.
If you feel your new project may benefit from Bootzooka, clone it and build your stuff upon it. We'd be happy if you let us know about that, but that's not obligatory. In case you have any questions regarding the new Bootzooka, do not hesitate to ping us. We are always glad to help.