If you're reading this, you're likely a candidate for an engineering position at Teachable. For this exercise, you're going to be building a search for Ruby Gems.
You'll take as input a search query, hit a search API endpoint, and displays the results in a list view with some added functionality (detailed below).
The application, once completed, should meet the following criteria:
- It have a search box that lets users search for Ruby Gems.
- It should display the results of the search in a list.
- Each Gem should have a button that lets users "save" and "unsave" Gems.
- It should have a way to view saved Gems, even after the browser window is refreshed.
The application does not need to do the following:
- Implement authentication or multiple users.
- Use any external search application or scale to a very large dataset size.
- Rank the results with sophistication.
Here's a few things we'll look for in our evaluation:
- Clean, well-organized code.
- Sensible architecture choices that perform well.
- A functioning backend and UI. If your role is frontend we'd like to see more styling but otherwise, minimal styling is all that is needed.
- Consideration for ensuring the system works.
We've included two data files to work from:
- data/rubygems.csv This file contains all publicly listed rubygems with some information about the gem you can choose to incorporate like authors, description, version, etc.
- data/rubygem_stats.csv This file contains the number of downloads for each gem. It is optional whether you want to incorporate this information.
Let us know your estimate of when you'll be ready with a submission.
To set expectations so that this exercise does not feel unbounded, with a complete focused block of time, we don't expect a level of effort beyond an evening or two or about 4 hours total. But we also understand you may not have a single block of time that would make it completeable in a single session. Beyond a functioning solution, you may document additional changes you would make given more time.
Feel free to be creative and make any technical or functionality choices that haven't been specified. You can use whatever language or packages you would like, but you should understand and be able to answer questions about anything you do choose to use. Please however do use a language in common use. For reference, at Teachable, we code in Ruby, Python, Elixir, Javascript/Typescript.
Send us a link to code with instructions to run and evaluate.