Skip to content

Instantly share code, notes, and snippets.

@Jerska
Last active November 7, 2017 14:35
Show Gist options
  • Save Jerska/553717eb770be0a2665be8b8a20ed6e7 to your computer and use it in GitHub Desktop.
Save Jerska/553717eb770be0a2665be8b8a20ed6e7 to your computer and use it in GitHub Desktop.
Full-stack engineering test

Technical Test

The goal of this test is to evaluate your ability to architecture a small full-stack app.

Instructions

The app you need to build is a small AppStore admin page. The initial import dataset can be found here: apps.json. The dataset being a bit old, don't be surprised by missing images.

The app is comprised of 2 parts:

  • The Ruby backend, responsible for:

    • handling the HTTP routing;
    • storing items in a database;
    • indexing items in an Algolia index when they change.
  • The JS frontend, responsible for displaying two pages:

    • one displaying a form to add records to the index;
    • one displaying a search page.

Backend

Build a minimal Rails application. You can use the algoliasearch-rails integration.

The app needs to implement the following endpoints:

  • GET / => Render an HTML page displaying the JS frontend app;
  • POST /api/1/apps => Add an app (as a JSON object) to the DB and return its id;
  • PUT /api/1/apps/:id => Update an app (as a JSON object) to the DB;
  • DELETE /api/1/apps/:id => Delete an app from the DB.

The items should be indexed in Algolia.

Frontend

We have different requirements for the two front-end pages.

Form page

The form page should be built using React to handle the data flow. Note: React previous knowledge is not a pre-requisite for this position.

It needs to:

  • display a form to create a new item;
  • validate that the data has the correct format;
  • use the Backend API to add the item to the DB and Algolia.

Search page

The search page has no framework or library requirement, you're free to use whichever you'd like, but our community website might help you.

It needs to:

  • display a searchbox to search in the items using Algolia;
  • show the results as a list or table;
  • it should be possible to delete any item in the results using the Backend API.

Provided code

We're not evaluating if you can set up webpack with rails (we know how painful it can be!), but rather how you would implement what was asked. This is why, alongside this test, we also provide this repository that you can use as a base.

This repository holds a generated Rails app with Webpack configured, hot reloading and which can be directly deployed to Heroku.

You're free to use it or create your own structure.

Evaluation Criteria

Please push your code to a public GitHub repository. We'll evaluate:

  • the architecture of the backend app;
  • the UI & UX of the frontend app;
  • and the quality of the code.

We also ask you to write a few tests. You don't need to aim for a full coverage, just a few examples are enough.

Good luck!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment