Dear Candidate,
Here you can find our detailed tech challenge for your kind consideration. Please let us know if you would have any questions about our tech challenge.
Yours truly, Raisin DS.
It is a node/express server which returns data from a JSON file. You don't have to run anything else than running the server: the frontend project is configured to fetch data from this server.
It is a React application created with create-react-app. There is only one implemented feature: a list of Product Offers (see branch develop). The data is real and was taken from our development mocks.
Node: v15 or higher yarn: v1.22.4 or higher
First thing is to install both projects: navigate within your terminal to each project folders and run yarn.
To start both projects: with your terminal, navigate to frontend/ and run yarn start. The start script will navigate to the api folder and start the server and will also start the frontend project.
To check the API use your favorite browser to navigate to http://localhost:3001/product-offers. The expected output is a JSON array with objects. Now to check the frontend, use http://localhost:3000.
Please find below the ticket that was started but not finished by our working student:
As a Raisin DS customer,
I want to see the Offers table
Because I want to check the latest offers.
- The web app should run without any issues.
All the offers returned from the(Completed)product-offersendpoint should be displayedThe following data should be displayed upfront about each offer:(Completed)
| [bank name] | |||
|---|---|---|---|
| [nominal_interest_rate] | [term] | [country + currency] | [open accopunt button] |
| [product details] |
- After click on "product details", the user should be able to view the following details about each offer:
| Interest Information | |
|---|---|
| Effective rate | [percentage_value] p.a |
| Nominal rate | [percentage_value] p.a |
| Term | [ x ] Year/s |
| Availability | [text] |
| Interest in case of early termination | [percentage_value] p.a |
| Product Details | |
|---|---|
| Deposit guarantee | [amount] |
| Currency | [currency] |
| Min/Max investment amount | [min - max amounts] |
| Withholding tax | [text] |
You can find all the dynamic information you need to display in the product-offers endpoint. You might need to get a bit creative with matching the data from the API response to the data that needs to be displayed in the table!
The designs and the way the details component is displayed is up to you.
Our working student has already started working on this task and has left some notes about his progress
- Wire FE with the Node BE and test the GET endpoint ✔ Completed
- Create reusable components (
HeaderandCard) ✔ Completed - Create
Offercomponent and fetch API data. ✔ Completed - Set up test env and add unit test coverage for all existing components ✔ Completed
- Create
InterestRateBoxand add unit test coverage ✔ Completed - Create
OfferBoxand add unit test coverage (ready for code review) - Create
OfferDetailscomponent amd add unit test coverage
Our working student went on vacation and left the ticket unfinished. Your task is to pick it up and finish implementing the Offers table. There are 2 tasks left in order to finish this ticket:
- Review the
OfferCard. The working student went on vacation in a hurry and forgot to open a pull request. The implementation is done in the branchdevelop. Before anything else you should create a pull request and then do the code review. You don't have to write/change the code, nor merge the pull request, just make comments/suggestions on merge request so the working student can work on improvements on his return. That's the first task. - Implement the
OfferDetailscomponent which displays the data mentioned in the ticket. Please create a new branch out ofdevelop, do the implementation ofOffersDetailsand then open a pull request. Unit tests will be added advantage. Instead of requesting to merge it into master, select it to be merged back intodevelopbranch. You don't have to merge this branch either, just open the pull request. This is the second task.
Github Templates has the limitation of not being able to preserve the history of branches. Due to this, you will notice that when trying to open a pull request from develop towards master, you will get There isn't anything to compare. To fix this, you can follow the steps below:
git checkout develop
git rebase origin/master -Xtheirs
git add .
git rebase --continue (continue)
git push --force
GOOD LUCK!