Skip to content

Latest commit

 

History

History
267 lines (181 loc) · 7.67 KB

File metadata and controls

267 lines (181 loc) · 7.67 KB

Frontend Challenge - EquipIndustry

This is a placement test. We would like to clarify that we don't expect everyone to fullfill it in its whole since it is meant for every career level. We hope all the people who would like to work with us make an attempt.

In this challenge, we focus on code design and design patterns in Javascript. The goal is to assess your experience in writing code that is easy to maintain, loosely coupled and highly cohesive.

EquipIndustry likes to work with constructive feedbacks, therefore we will pay special attention to everyone's solution. We will contact you about the positive aspects of your test, as well as what you could improve in it. It is worth trying! :)

For this challenge you will be creating highly simplified version of the web app using ReactJS. This is a Frontend challenge, You should use Git as you build your solution. For submission you are asked to push your repo to GitHub and provide us with the link and any necessary instructions.

Your app is to have three models: users, company, and product. Your database should closely resemble the following entity-relationship diagram:

database equipindustry challenge

The following illustrations should only serve as an example. You do not need to follow the designs presented below. You can split functionality out to other pages. Just make sure it is all there. Figure 0:

create principal page with all functionalities

Home

Figure 1:

An unauthenticated user should first be prompted to log in, sign up, or reset their password:

Login platform

Reset password

Figure 2:

As per Figure 1, users have names, so "Name" should be a field on your sign up page.

Register platform

Figure 3:

After signing up, users doesn't belong to any company yet, so when they log in for the first time, they should be prompted to join an company (or create a new one).

choose company

Figure 4:

Users should be able to update the information of its company (i.e. their names, products, others).

edit company

Figure 5:

Once a user joins a company, the home page should change to become an overview of actions for that company: viewing products, editing the company, or leaving the company.

company home

Figure 6:

A company should have the functionality of creating and updating a new product with the following fields: name, price, and discount.

create product

update product

Finally, the product page should show all product that belong to the company.

Here are some optional exercises for you to do. We recommend that you try at least one of them. They are all mutually compatible, so you could do all of them.

Allow users to change their own name, email address, and password.

user details

Allow users to modify or delete existing products.

profile report

Allow users to filter products.

company filters

Unit tests are a good idea. We don't mandate that you write any for this challenge, but feel free to go ahead and write some tests for your code.

Feel free to add a feature of your own devising.

For this challenge you will be writing your own ReactJS Single Page App

This is a React challenge, and is not strictly design focused, however, if you'd like to build and style your own components, please go right ahead. If you're not interested or comfortable with doing that, there are plenty of component libraries to help you. Semantic UI is a good choice. Additionally, feel free to use any additional libraries you find valuable.

You should use Git as you build your solution. For submission you are asked to push your repo to GitHub and provide us with the link and any necessary instructions.

Your solution should allow you to perform all of the same actions. Please have a read through the readme to understand more about the tasks to be completed. For this challenge you will be consuming an existing JSON REST API represented as a JSON API. To setup the backend and start the server, navigate to the root of the repository and run yarn backend:setup. To start the backend server, navigate to the root of the repository and run yarn backend:start, it will start listening on port 3000 locally, your React SPA should be making requests to it to create, read, update and delete data.

The backend uses a SQLite database to store the data generated by your React application. If you’d like to reset the data, just delete the backend/db.db file and restart the server.

Please read the endpoint documentation for information on the specific requests and responses for the endpoints, and how authentication should work. You’re welcome to extend the functionality of the backend server, however heavily modifying existing logic is discouraged.

Your solution should compile to a single HTML page, and a bundled JS file, you can use any build tools you’d like. Webpack is not a bad choice.

Do your best!!!

You'll need to have at least NodeJs installled to run the application and Git installled to clone the repository and submit a pull request.

You need to know a little of Git, which is the tool that helps us controlling our files' versioning.

git clone https://github.com/equipindustry/challenge.git
cd frontend/
yarn backend:setup
yarn backend:start

If everything is correct, access the following URL: http://localhost:3000/.

Here at EquipIndustry feedbacks are part of our culture, so it would be very rewarding if you could contribute with our hiring process by giving us your opinions on the challenge. We would like you to send it even if you didn't finish the challenge.

beacon