Thanks for taking the time to complete our frontend coding test! You can start with forking this repository and off you go.
Good luck!
We'd like you to build an application that:
- has a sensible and maintainable structure
- is well tested
- is accessible
- looks like the designs provided (it doesn't have to be "pixel perfect")
- mobile first and responsive
- clean and understandable Git history
It's helpful for us if you include some notes to explain the decisions you make.
We'd like you to use React. We have provided a skeleton for the React application and included SASS for styling. We have also provided some useful constants in constants.scss. Feel free to add any additional libraries which you think are needed for the task.
We included some initial code in App.js that we would like you to refactor.
We have also included a mock API which is documented below.
We'd like you to build one page. We've provided the design. On this page the user can:
- Filter appointments by their type (GP, therapist, specialist)
- Select date and time
- Select appointment type (audio, video)
- Book an appointment
You will need to use 3 API's for this page.
Returns a user object with the following info:
firstName:Stringof the user's first name.lastName:Stringof the user's last name.avatar:StringBase64 representation of the user's avatar image.dateOfBirth:DateThe user's Date of Birth.
Returns:
Arrayof available appointments
Each available appointment is an object which contains
id:Intthe appointment idconsultantType:ArrayofStringwith the available consultant typesappointmentType:ArrayofStringwith the available appointment typestime:Date ISO 8601the time of the appointment
Expects an object in the request's body with the following information:
userId:IntThe user's ID that this appointment is for.dateTime: The user's selected time slot as aDate ISO 8601.notes:StringAny notes the user added when booking. note: not required, can be null.type:StringThe type of the appointment likeGP appointmentorPhysio appointment.
The endpoint responds with a 200 status on success.
We recommend using NVM for managing node versions on your machine.
brew install nvm
...and installing the required node version with the following command:
nvm install
This repo is using Yarn as it's package manager.
brew install yarn
Installing packages:
yarn install
yarn start
