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
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.
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.
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.
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
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.
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).
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