Skip to content

Instantly share code, notes, and snippets.

@jaikoo
Created April 7, 2021 11:44
Show Gist options
  • Save jaikoo/7263625ebeca8b80b5ee2fdc0d2791b9 to your computer and use it in GitHub Desktop.
Save jaikoo/7263625ebeca8b80b5ee2fdc0d2791b9 to your computer and use it in GitHub Desktop.
Coding test

Take home test (CRUD)

Thanks for taking the time to do our full-stack coding test. The challenge has two parts:

  • A task to create a basic service and ui to allow users to track their spending.
  • Some follow-up questions

Task

We needs to create a service that allows users to create an 'Account' in GBP and keep track of balance in that account. The service allows for transfers to be made against an account. Those transfers can be credit, which increase available balance and debit, which decrease available balance. If at any point the available funds reach 0 or bellow the API should return an error and stop accepting debits, but keep accepting credits. The user should be able to see all their transfers sorted by date.

Service Details

Use Node.js for the backend with whatever libraries you feel comfortable with. Data should be persisted in some sort of data store (of your choice). The service should have endpoints to support the following: Create an account Get account Create a transfer (debit and credit) Stop Debits if balance is <=0 List transfers Any other endpoints or functionality you see fit.

Client Details

We'd like you to use React. On top of that, use whatever front-end libraries you feel comfortable with. Design the UI anyway you see fit. The UI should have and allow - the user to create an account. - the user to create transfers (with any value) against an account. - show a warning when balance reached 0 - show up to date balance information. Any other endpoints or functionality you see fit.

Running the project

To startup the frontend client run the following command.

npm start - This will start the application for development
npm run build - Will create a production optimised build
npm test - Will run the front end tests

Task requirements

Feel free to spend as much or as little time on the exercise as you like as long as the following requirements have been met. Please complete the user story below. Your code should compile and run in one step. Feel free to use whatever frameworks / libraries / packages you like. You must include tests Please avoid including artefacts from your local build (line node dependencies) in your final ZIP file The project should have a Dockerfile for the API at least, bonus points if it has a docker-compose with the API/UI and all dependencies.

Technical Questions

Did you have time to complete the coding test? What would you add to your solution if you had more time? How would you optimise your solution solution? What are the security issues you can see in your solution? How does your solution handle concurrency in order to maintain correct ordering or transfers. List a few of your preferred JavaScript frameworks (also let us know in which situations you would choose to use/not use them).

Submission

Please make this a single zip file named {yourname}.zip containing: A single markdown file with the answers to the technical questions One folder containing the technical test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment