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 -
- Hue - the base hue value for the search.
- 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.