The Polaroid Eye - Typito’s Engineering Assignment Template
You’re going to build an application that I’m calling ‘The Polaroid Eye’. Without much ado or explanation about how lame that name is, here we go - 

Requirements

(App has to be web-based. Accessible from any standard desktop browser and hosted on a server somewhere.)

  • Enable users to search and find images which are close to a desired average hue.
  • Any user should be able to upload an image (JPEG/PNG) from their desktop via the app.
  • Users should be able to perform a search on all uploaded images (uploaded by any user) via the app.
  • The search will take two inputs from the user -
  1. Hue - the base hue value for the search.
  1. Spread - the +/- range from the base hue when searching.
  • For instance, if the hue is 60 and the spread is 10, the app should show all images which have an average hue between 50 and 70.
  • Coming to the user interface, there are two parts - Upload and Search. I have given a gist of the upload part above already.
  • The Search interface should list the resultant set of the images in a vertical list or a grid. Further - 
  • The page should NOT refresh to display updated results as the user changes parameters of his/her search. 
  • The hue and spread controls MUST be slider-based. Can use HTML’s <input type="range"/>
  • NO “Submit” button or the like. Results should appear/update without the user having to do anything other than moving sliders around.
  • Try to use the user’s bandwidth optimally while providing the best possible experience.
  • Write some basic tests to ensure sanity as future developers make changes to your app.
  • Write some documentation for code that could use some explanation/context for future readers/reviewers.
  • Try to keep the code a little clean. Readable without having to take an aspirin afterwards.

Submission

  • A zip works. Or a private github/bitbucket repo url. 
  • Mention any non-trivial installation details in a README(text/markdown) file in the root of your directory. 
  • If I struggle with the install and setup, I’ll probably give you access to a remote linux server you can ssh into and try to setup yourself (I’ll help if needed of course). 

For any clarity, feel free to ask me at matthew@typito.com