For this exercise we would like you to build a small 2 page application.
This application is intended to allow organizations some very light-weight theming capabilities inside XX company.
The application will consist of the following:
Elements:
- A select dropdown that lets user choose an organization from the data structure listed in "The Data" below
- A button labelled "Reset"
- A button labelled "Apply Theme"
- A link at the bottom of the page labelled "Your homepage"
User requirements:
- When clicking "Apply Theme" the background of the site should change to reflect the background image specified in the
organizationsdata structure. (See "The data" below) - When clicking "Reset"
- The background should reset back to white
- The select dropdown should reset back to 'choose an organization'
- Clicking on "Your Homepage" should direct the user to the "Homepage" page (see below)
- The "Your homepage" link should be centered at the bottom of the viewport.
Elements:
- An
<h1>that reads "Welcome to the $ORGANIZATION_NAME homepage" - A link at the bottom labelled "Back to settings"
User requirements:
- $ORGANIZATION_NAME should be the name of the org chosen in the select dropdown on the "settings" page
- When $ORGANIZATION_NAME is missing, it should default to "XX company"
- The background on this page should reflect the background chosen in the select dropdown on the "settings" page
- The H1 should be vertically and horizontally centered
- The "Back to settings" link should be centered at the bottom of the viewport.
The data structure is contained in orgs.json in the root of this repo. For simplicity's sake, feel free to hardcode/inline it into your application. For this application assume the following:
org_name== Organization Namebackground_image== the background image to apply as their "theme"
Please use this Figma file as a guide for the site's look and feel:
https://www.figma.com/file/D0SQ9AxL5SZwEgAsJNyp3Y/FE-Interview-Mock?node-id=0%3A1
If you're unfamiliar with Figma, please know that under the top left "F" dropdown there are multiple pages. This should give you a general feeling how the site should look with/without a company theme.
-
Please setup your IDE to use the .eslintrc in the project root for linting conventions. If you do not have eslint already installed, you can install it as a local npx module as per here: https://eslint.org/docs/user-guide/getting-started
-
We are a React shop that uses Redux and Context. However, do not feel obligated to using React if you’d prefer another approach! We simply ask that you discuss your choices in
SOLUTION.md -
The application should work correctly in the latest Chrome; don’t worry about cross-browser compatibility.
-
We expect this exercise to take less than 1h. Once you’ve reached an hour working on this exercise, please stop! At that point, please outline any additional work you would have done in
SOLUTION.md -
Once you’ve completed the exercise, please submit a PR to this repo, tagging
@xxxxxxin the description. In your PR, please provide a video or set of screenshots showing the working application.
Company background patterns courtesy of www.subtlepatterns.com