Skip to content

Instantly share code, notes, and snippets.

@j4rs
Created November 19, 2019 01:24
Show Gist options
  • Save j4rs/1e4c1e37e063fd5143b8b9ed18329730 to your computer and use it in GitHub Desktop.
Save j4rs/1e4c1e37e063fd5143b8b9ed18329730 to your computer and use it in GitHub Desktop.
React on Rails challenge.

React on Rails exercise

Exercise to assess your skills on React and Ruby on Rails.

๐Ÿ’ป Instructions

Hey, first of all congrats ๐ŸŽ‰, because you reading this means your resumรฉ (and most likely your github account) convinced our team that you could be the next full stack developer to join us and help us transform the digital job market in Latam building innovative tools while having fun in the process.

If you are like us, you will enjoy coding this exercise that will ultimately benefit you by practicing even if you are not the candidate finally selected.

Hint: ๐Ÿ’ก Before start coding anything please read this doc a couple of times as you may have doubts. Try to understand everything first, then stop at what are the minimum stuff we are asking you to do as it may influence how you approach the solution. The hacker in your mind will be impatient to start and code everything at once, so we recommend you to work using iterations. For example, version 0.1 of your backend app is just the foundation that does nothing but can be installed in Heroku. Then v0.2 contains the endpoint that returns some mock data, then v0.3 has the capability to store the data and so on.

Ok, no need to shh me ๐Ÿคซ, no more talking, let's just do this.

Search API specification

The team created a special API to allow other applications search jobs in Get on Board. The result is pretty similar to what you get by using the search input text next to the logo when visiting getonbrd.com but in a computer friendly format. This is what you must know about this API.

GET /search/jobs

It returns a list of jobs in JSON (structure specified below). Click here if you want to give it a try.

Params
  • q (string)
Response
{
  "jobs": [
    {
      "id": "rails-and-react-full-stack-developer-get-on-board-remoto",
      "title": "Rails and React Full-Stack Developer",
      "recommended": false,
      "pinned": true,
      "is_hot": false,
      "salary": "4200 - 5000",
      "description": "<p><strong>Our tech stack includes: ...",
      "functions": "<p>Our product was born to a technology company, so ...",
      "benefits": "<p>Along with the perks is our culture. We are an ...",
      "remote": true,
      "city": null,
      "country": null,
      "country_flag_url": null,
      "new": false,
      "seniority": "Expert",
      "logo_url": "https://getonbrd-prod.s3.amazonaws.com/uploads/users/logo/1/ISO_NEGATIVE-padding-getonboard.png",
      "url": "/empleos/programacion/rails-and-react-full-stack-developer-get-on-board-remoto",
      "modality": "Full time",
      "published_at": "nov 12",
      "company": {
        "name": "Get on Board",
        "about": "This is us! We are set to shape and transform the digital job market in Latin America...",
        "url": "/companies/get-on-board"
      }
    }
  ]
}

React app

Build a simple react or react native application with the capability to add jobs to a list of favorites jobs.

Features

The app should meet a minimum set of features:

  • Being able to type the keywords, let's say React and Rails remote
  • Get a list of jobs - as the result of hitting the button Search - showing: title, salary, whether the job is remote, city, country and the name of the company
  • Being able to click on any job and see its details containing the rest of the fields: about the company, seniority, description, functions, benefits, etc
  • Being able to add (mark) any of the jobs to the list of (as) favorites
  • Being able to refresh the list by (hitting the button Search) or use a different browser still seeing the jobs previously added (marked) as favorites

Rails app

Build an app in Ruby on Rails to store and fetch the favorites jobs. This application should be the backend of your react application in a form of an API. Where and how the app persists the data is up to you but please read the next section Required in order to be compliant with everything asked.

๐Ÿ‘‰ Required

There is no much constraints on how you can code your apps, we only ask you to:

  • Provide a github repository for each application
  • Both repos should contain a README.md file in English detailing things about the app, for example: the purpose of the app, how to use it, rationale behind technical decisions, hot to install it on heroku, how to run it locally by installing dependencies, how to run the test suite, etc
  • Write some tests for each application, no need to cover all the possible scenarios
  • Provide urls in Heroku to try your app

๐Ÿš€ Final notes as we feel you can't wait longer

Please have fun ๐Ÿฅณ, be yourself, be sincere, be creative and show your arsenal of skills. If it turns out you know some CSS then use it, shine โœจ, amaze us. Nothing is more mesmerizing for us than seeing how other sharp minds think and code.

Last but not least, read the disclaimer and the FAQ sections and if your answers are not there then chat with us using the Messages tab in Get on Board, we will always get back to you as fast as we can, we promise.

๐Ÿ“ƒ Disclaimer

This is an exercise without any commercial purpose and Get on Board will never by any means:

  • Share or use your code
  • Oblige you to take this exercise
  • Compensate you in any form for taking this exercise

โ“FAQ

The clock is ticking, how much time do I have to finish the challenge?

โŒ›๏ธ - Do it at your pace, we know you have a lot of stuff on your plate more important than hacking an exercise. However have in mind that there are other candidates competing and the more you delay the response, the higher the chances we find the dev to fulfill the position.

Woh, this challenge is damn long, can I just submit an incomplete or buggy solution?

๐Ÿ˜ฌ - I mean, sure, however you better have a good reason for it or reviewing your code will lose priority versus the rest of the candidates.

This is kind of boring, and my best friend is a great dev, can I just pair with him?

๐Ÿ™„ - Uhm, What would be the point doing that? We want to see your code.

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