Skip to content

Latest commit

 

History

History
119 lines (68 loc) · 3.32 KB

front-end.md

File metadata and controls

119 lines (68 loc) · 3.32 KB

Front end Engineer Challenge

Submit all the answers by creating a private GitHub repository and sharing it with reedsyapplications. Alternatively, you can submit a zipped folder with all the answers. Your submission should include markdown and code and each answer should be in it's own folder.

The estimated time to accomplish every task sits between 10 and 15 hours, depending on your experience.

1. About you

Tell us about one of your commercial projects with Vue.js.

2. General

2.1. What kind of front end projects do you enjoy working on? Why?
2.2. Which are your favorite features of HTML5? How have you used them before?
2.3. Explain the difference between creating a DOM element setting innerHTML and using createElement.
2.4. Compare two-way data binding vs one-way data flow.
2.5. Why is asynchronous programming important in JavaScript?

3. Styling

Given the HTML file front-end/q3/q3.html, implement the styling so the page matches the image below.

Styling

Bonus

  • Implement styling rules that consider different screen sizes.

Notes:

  • The footer should stick to the bottom when scrolling;
  • You can, and should, use a CSS pre-processor, such as SASS or LESS;
  • Avoid changing the template, your answer should only style the given HTML.

4. SPA

Using Vue.js, implement an SPA that gets information from a server (explained below) and has the following pages:

Books list

Display all available books returned from the API.

  • Synopsis should be truncated at 200 characters.
  • Book's title and cover should link to the book's individual page.
  • Though the upvote functionality is not required, the upvote state should be represented.

Books list

Book page

Display a single book information, highlighting the cover and displaying the full synopsis.

Book page

The upvote functionality is not required, the UI should only reflect if a book has been upvoted yet or not. For this question, you don't have to replicate the example screens above, feel free to implement any design that you'd like.

Important notes:

  • Do not change or submit the server code, your answer should focus on the client application only;
  • Add test coverage as you see fit;
  • You may use TypeScript instead of plain JS;
  • Use a CSS pre-processor;
  • Your app must be responsible for all of it's dependencies and they should be installed via yarn or npm install. The app must run by using either yarn start or npm start.

Bonus

  • Implement text search on the books list (for title and synopsis)
  • Add pagination on the books list
  • Add a comments section on the book page

Server

In order to solve this problem, a simple server is provided, which you should use to get the data. Head into front-end/q4/server and install the server dependencies using:

yarn install

or

npm install

Run the server using:

yarn server

or

npm run server

The server should be running on port 3000.

Available routes

Returns a list of books, with their info.

Returns the book information for the given SLUG (404 otherwise).