Times change, and so does Bootzooka, our simple application scaffolding project: the backend is now based on Akka HTTP.

Akka HTTP (formerly known as Spray.io) is a HTTP client & server implementation on top of Akka & Akka Stream, with a very flexible and elegant routing DSL for defining endpoints. It's not a web framework, it's not an application server; instead, you get a library, on top of which you can implement various services.

So isn't it a lot of work to create a web application using Akka HTTP? Turns out it's quite simple. The biggest missing piece is session handling, which we released some time ago as a separate library, Akka HTTP Session. Apart from that, Akka HTTP has all that is needed for a Single Page Application: serving static files from a (resource) directory and defining HTTP/REST-endpoints.

I'm sure you'd like to see some code! For example, here's a route handling changing a user's password, taken from UserRoutes.scala :

case class ChangePasswordInput(currentPassword: String, newPassword: String) path("changepassword") { post { userFromSession { user => entity(as[ChangePasswordInput]) { input => onSuccess(userService.changePassword(user.id, input)) { case Left(msg) => complete(StatusCodes.Forbidden, msg) case Right(_) => completeOk } } } } }

All of the above are just function calls ( post , path , etc.)! There's no reflection/annotation magic, or anything like that. The above route is also fully testable, in isolation, without the need to start up a server.

How can you run Bootzooka? You don't need any kind of container, embedded or not! All that you have to do is bind to a socket and pass in the routes which should handle incoming requests to an ActorSystem extension provided by Akka HTTP. Take a look yourself, from Main.scala :

Http().bindAndHandle( routes, config.serverHost, config.serverPort)

If you'd like to quickly start developing an application using Scala, Akka HTTP and Angular, Bootzooka is for you! Apart from what's described above, its has a lot of the "boring" features done, such as user registration, logging in/out, notifications, as well as an integrated SBT+Grunt build system, backend & frontend tests, fat-jar deployments (local and to Heroku).

In other words, all that you need when starting a new project to start coding business value, instead of infrastructure.

You can take a look at a live demo of the running application. Star the project on GitHub if you like it, and of course, if you would have any suggestions or contribution ideas, let us know!