Ultrasaurus is an online thesaurus, with the additional capability of giving hypernyms, hyponyms, and holonyms in addition to the usual synonyms and antonyms.
It resulted from a challenge I was given, to:
- Write a single-page web app, that
- Calls at least one external service,
- Displays the retrieved information to the user, and
- Provides at least one user interaction with the fetched data,
- ...with 7 days to complete the project.
You can try it out online at labs.screaming.org, at least for the time being.
The back end exposes a single REST service api/words/{word} via Jersey. Requests to this interface are handled with the asynchronous capability in Servlet 3.0, and the returned model objects are transformed into JSON via the Jackson library. The data is sourced via REST client call to wordsapi.com using the Unirest for Java library. HK2 is used for dependency injection, and the Typesafe Config library provides a configuration file in HOCON format. Google Guava is used for its LoadingCache.
The interface is a straight-forward application of Bootstrap, using Backbone.js for the routing, Handlebars.js for client-side templating, and a bit of jQuery.
If you have JDK 8 and Apache Maven already installed, you can build a WAR with a simple mvn install. Once built, you can rename the resulting target/ultrasaurus-0.0.1-SNAPSHOT.war to ROOT.war and drop it in the deployment directory of a Servlet 3.0 capable container like Apache Tomcat 7.x or later.
Once deployed, you should be able to hit http://localhost:8080/
I regret not having time to make this easier via Vagrant or Docker.