Boosting applications with REST and Backbone.js [pt]

In January, 2014 I published an article (in Portuguese) in Java Magazine #123, about smart client-side applications, comparing them with other web application styles such as Java web frameworks.

Article Boosting applications with REST and Backbone.js - DevMedia

Summary

This article introduces smart client-side applications, comparing them with other web application styles such as Java web frameworks, highlighting the productivity usaging concepts such as REST, JSON and MVC on the client-side. Then, it presents Backbone.js and its main parts such as Models, Collections, Views and Routers, besides templating using Handlebars.js and communicating with a Play Framework back-end over REST and JSON.

When is the subject useful?

This subject is useful for Java developers that need to bring the desktop experience to his web applications, reducing the response and navigation time as well properly organizing the JavaScript code in a structure based on MVC architectural pattern.

Tasker

In August, 2013 I published the Tasker Project on GitHub to illustrate the article I wrote for Java Magazine #123, Boosting applications with REST and Backbone.js .

Tasker is a web application using Backbone.js and Handlebars.js on the client-side and Play! over Java on the server-side. This application simulates a very simple Kanban board based on Agile methodologies. Basically, the board can have multiple projects, each project can have multiple stories and each story can have multiple issues, which can be either task, bug or enhancement.

The user can create and remove projects, stories and issues, and also move issues around 4 lanes representing its possible status: Backlog, In Progress, Verify and Signed Off.

Purpose

The main purpose of Tasker is to demonstrate important front-end concepts of nowadays about smart client-side applications, such as:

Client-side

  • MV* on the client-side with Backbone.js
    • REST-based models
    • views
    • routers
    • events
    • validation
  • Templating with Handlebars.js
    • Custom helpers
  • Using Bootstrap components
  • Using Font Awesome fonts
  • Writing LESS css
  • UI-level i18n
  • Responsive/adaptive layout

Server-side

  • Play! Framework as a modern, simple yet powerful back-end
    • models
    • views
    • controllers
    • REST-based routers
    • Google Clojure compilation and minification
  • Ebean as a simple ORM approach
    • JPA-based mapping
    • simple query language
    • evolutions
  • JSON manipulation with Flexjson
  • Unit testing with TestNG
  • Code coverage
  • Setting production profile
  • Deploying to Heroku