Skip to content

pohl/ultrasaurus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ultrasaurus

Introduction

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.

Implementation

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.

Running Locally

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.

About

A thesaurus

Resources

Stars

1 star

Watchers

1 watching

Forks

Packages

 
 
 

Contributors