|
| 1 | +# Frontend Challenge |
| 2 | + |
| 3 | +We would like you to make your own small telecom branch, where people can browse and perhaps purchase phones and accessories. Everthing you need to get started right away is included in this repository. |
| 4 | + |
| 5 | +The main purpose of this challenge is for you to show us your frontend skills which include your knowledge of React and how you are constructing and organizing components and assets. |
| 6 | + |
| 7 | +We prefer you to solve the challenge using TypeScript, however, plain JavaScript will do just fine. |
| 8 | + |
| 9 | +If you do not consider yourself particularly good at visual expressions, don't worry. This challenge is primarily to see how well you master React. |
| 10 | +Likewise, we do not expect you to be all knowledgeable about either Node or NPM, if you do, that's great, but it's not a requirement. We do, however, expect you to have extensive first-hand knowlagde of ES6, HTML5 and CSS3. |
| 11 | + |
| 12 | +## Sample files |
| 13 | + |
| 14 | +Just to get you started, we have included some sample files which show how to connect to the data API, using CSS modules and how to display static assets. |
| 15 | + |
| 16 | +All sample files are formatted using [Prettier](https://prettier.io/). We are recommending you to |
| 17 | +continue to do so, but it's not mandatory. |
| 18 | + |
| 19 | +NB. If you're using VS Code as your IDE, configuration files such as eslintrc and webpack are hidden by default. Likewise, Prettier auto format on save is enabled. You can disable it all in `/.vscode/settings.json` if you like. |
| 20 | + |
| 21 | +## Install and run |
| 22 | + |
| 23 | +This package will install all the necessary modules, include component Hot-Loader and various linting and formating tools, to immediately let you begin coding. |
| 24 | + |
| 25 | + npm install |
| 26 | + npm start |
| 27 | + |
| 28 | +The development server (include the API) is running at [http://localhost:3000]() |
| 29 | + |
| 30 | +To lint all your scripts and style components: |
| 31 | + |
| 32 | + npm run lint |
| 33 | + |
| 34 | +To build and run your app: |
| 35 | + |
| 36 | + npm run build |
| 37 | + npm run app |
| 38 | + |
| 39 | +The production server is likewise running at [http://localhost:3000]() |
| 40 | + |
| 41 | +You are welcome to add or modify packages. |
| 42 | + |
| 43 | +## Data API |
| 44 | + |
| 45 | +Product data is located in the `/data` directory as a collection if JSON files and is accessible through an API. All requests have a built-in delay randomizer to simulate a live environment. |
| 46 | + |
| 47 | +- `/api/device/list` returns a complete list of products. |
| 48 | +- `/api/device/{PRODUCT_ID}` returns an individual product. |
| 49 | + |
| 50 | +## Static files |
| 51 | + |
| 52 | +All files in the `/static` directory will become available at runtime. The files will follow the current tree structure in the directory and be accessible like so: |
| 53 | + |
| 54 | +- `/static/devices/Apple_iPhone7_Slv-1.png` |
| 55 | + |
| 56 | +## Requirements |
| 57 | + |
| 58 | +- You must use React. |
| 59 | +- Display the product list as a whole or partial. |
| 60 | +- Display individual product information. |
| 61 | +- The content must be responsive. |
| 62 | +- Must build without errors. |
| 63 | + |
| 64 | +The final result has to be available in a public Git repository which include the commit history. You are also permitted to use a private repository, just make sure we have read access. |
| 65 | + |
| 66 | +## Optional tasks |
| 67 | + |
| 68 | +- Show product variants. |
| 69 | +- Sort product list by brands and/or vendor. |
| 70 | +- Implement [React Router](https://reacttraining.com/react-router/web/guides/quick-start) for better navigation. |
| 71 | +- Implement a simple shopping basket. |
| 72 | +- Create unit tests. |
| 73 | + |
| 74 | +## Restrictions |
| 75 | + |
| 76 | +There are no restrictions as such. However, we do prefer you to show us your own idea and work; not just reusing or refactoring other libraries or frameworks. |
0 commit comments