/custom-portal

Primary LanguageJavaApache License 2.0Apache-2.0

Custom Portal - v 1.0

Origin

When Google launched the iGoogle service in 2005, it became my default home page. I especially liked the capability its dashboard capabilities. My favorite gadget was the one displaying my bookmarks.

When they announced its retirement, I looked for a viable alternative, a hosted service, with multiple account support, with an adaptative layout, etc.

Because I did not find something for my taste, because I see here an opportunity to mix many of my favorite technologies, I started this project to primarily store my bookmarks..

Key components

Google App Engine for the identity management, the persistence layer, and the Web server

I've been using the Google App Engine service since the beginning, for personal and professional services. So I naturally decided to use GAE to host this service.

Objectify for the ORM

After one project with JDO on GAE, and others with JPA and Hibernate (JPA 2 compliant), I switched to Objectify. While being specifically made for Google Datastore (with a smaller set of features, like the absence of join support), it offers a standardized approach (in the JDO spirit) and it's an effecient implementation.

RestEasy for the RESTful API

A long time ago, I designed and implemented my own transport layer between back-ends and Web clients. Nowadays, there are so many libraries doing it with the support of huge communities, like Spring or Jersey. For this project, I've chosen the light RestEasy.

Jackson for the transport protocol

Jackson is the best library for manipulating the JSON data format within the JVM.

Dojo Tookit for the JavaScript mastering

As a contributor of a Web 2.0 framework for the Oracle Collaboration Suite in early 2000, I really like the JavaScript programming language while recognizing it's a difficult one to master. When I joined IBM Rational, I had the chance to use and to contribute to (through the IBM community) the Dojo toolkit. Since then, it's my favorite JavaScript framework and with the AMD support, its build system, and its large widget library, it's the perfect fit for enterprise-class Web applications.

Bootstrap for the presentation

As many programmers, my UI design skills are limited. Relying on Bootstrap which provides nice looking widgets and a grid management system is an easy win. As Martin Pengelly-Philips did port the Bootstrap theme to Dojo, I use his dbootstrap library.

Stylus for the CSS manipulation

Whoever wrote the style sheet for a complex web site knows how easy it becomes messy. After LESS and Sass, two popular CSS pre-processors I want to give a try to Stylus. I really like the use of mixins: to reduce the cluter with vendor prefixes, to define 'flexible layout' compliant classes, etc.

Intern for the Dojo code testing

Intern is a relative new testing library that supports unit and functional tests. It uses node.js too, like Stylus.

Selenium WebDriver for the interface testing

Even if Intern supports the functional tests, I like the ease of Selenium WebDriver test development. It relies on the server developer skills to test the Web client: it's not the same person doing the code and the tests.

And friends

  • Guice for the dependency injection
  • Apache Shiro for the authorization
  • Joda Time for handling dates
  • maven, especially for its extensible framework and the strong community building plugins