I recently discovered Lineman, a fantastic productivity tool that takes the pain away from front-end web application development.
Traditionally, at least for Java developers, the front-end part of a web application is just an obnoxious detail, an unpleasant experience that needs to be survived. The effect of this is that backend developers hate front-end code.
- To be able to work on the front end you have to check out the whole backend project
- The front-end application is forced into a very particular structure that suits the backend application.
The downside of this is that client-side code is not given the same amount of care and attention that is given to server-side code. Typically, client-side code that is part of a server-side application is a big ball of mud without real structure and usually without tests. It is hard to understand or to change.
Lineman allows you to build fat-client web apps and completely decouple the front-end from the back-end. In addition it builds assets, mocks servers and runs tests on every file change. It also comes with an API proxy that allows you to pair your client app with a server-side app whenever the development mock server is not enough. Yes, you can work with front-end code and not miss the server-side tools a single bit :)
Liberating client-side assets from the opinions of a server-side framework works wonders. You can now develop the front end in a much more agile way. It is much easier to give it the proper structure and write tests when the front-end project becomes first-class.
As an introduction to Lineman I recommend watching the following video with Justin Searls.
In the next post I will post the details of a small application that I built with Lineman using continuous delivery on Cloudbees.