Teachable frontend takehome
If you're reading this, you're likely a candidate for a frontend job at Teachable. You're going to be building a search application that takes a user's search query, hits the Ruby Gems 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 (localStorage is a fine for this).
Here's a few things we'll look for in our evaluation.
- Clean, well-organized code.
- Sensisble architecture choices that could scale well.
- A clean, functioning UI.
- Bonus points if you write tests.
Getting started
Step 1: Fork this repo and clone it
Step 2: Install dependencies
We have a few dependencies necessary to run the build and proxy server, the rest are up to you.
npm install
Step 3: Start the development server
npm run dev
Step 4: Start coding
We want to judge your ability to program UIs, not configure build tools. That's why we chose Parcel as a bundler, please consult the documentation if you run into any trouble.
We added a CSS file as an example, feel free to delete that.
Step 5: Network requests
You may have noticed the server.js file at the root of this application, that's there to solve cross-origin issues when making network requests. The server automatically starts up when running "npm run dev" or "npm run start".
To see a sample request in action, run the following in your command line.
curl http://localhost:3000/api/v1/search.json?query=rails