Engineering Candidate Project - JWesP/ticTacRest GitHub Wiki

Overview

We’d like for you to create a small Dropwizard (http://www.dropwizard.io/) application that provides a RESTful web API for the game of tic-tac-toe (https://en.wikipedia.org/wiki/Tic-tac-toe). Your solution should demonstrate what you feel are best practices related to code design, implementation and engineering discipline. You may also find the REST API tutorial (http://www.restapitutorial.com/) helpful.

Requirements

We’d like your solution to encapsulate the following:

  • Be a web API. We should be able to communicate with the API using the cURL command line tool (or equivalent).
  • Enforce the rules of tic-tac-toe. For example the players should be forced to take turns and a piece should not be allowed to be placed in an already occupied square.

To be clear we’re not expecting you to build any of the following:

  • A user interface to facilitate playing the game. We will interface directly with your service from the command line and don’t need a special user interface.
  • An artificial intelligence algorithm to provide a computer player of the game. We will provide two human players that both use your web API.

Logistics

We are happy to provide help working through this problem should you need it, but we do expect you to do the majority of the work. That said, we do have extensive experience with Dropwizard (it’s a technology that we use in production at Main Street Hub) so we can help you if it’s a bit of a foreign technology to you.

Deliverables

For the purposes of this exercise we’d like two deliverables from you:

  • An estimate of how long you feel the project will take you, and when you think you are able to deliver a working solution. Please feel free to do a little bit of research if necessary into the various technologies involved first if needed.
  • Once you’re complete, please give us a complete copy of your source code as well as any instructions necessary to build and execute it.