Exercise brief
Design an API for a vending machine, allowing users with a "seller“ role to add, update or remove
products, while users with a "buyer" role can deposit coins into the machine and make purchases.
Your vending machine should only accept 5, 10, 20. 50 and 100 cent coins.
Tasks
• REST API should be implemented consuming and producing "application/json"
• Implement product model with amountAvailable. cost, productName and sellerld fields
• Implement user model with username, password, deposit and role fields
• Implement an authentication method (basic, oAuth, JWT or something else, the choice is
yours)
• All of the endpoints should be authenticated unless stated otherwise
• Implement CRUD for users (POST /user should not require authentication to allow new user
registration)
• Implement CRUD for a product model (GET can be called by anyone, while POST, PUT and
DELETE can be called only by the seller user who created the product)
• Implement /deposit endpoint so users with a "buyer" role can deposit only 5, 10, 20, 50 and
100 cent coins into their vending machine account
• Implement /buy endpoint (accepts productld. amount of products) so users with a 'buyer-
role can buy products with the money they've deposited. API should return total they've
spent. products they've purchased and their change if there's any (in an array of 5, 10, 20, 50
and 100 cent coins)
• Implement /reset endpoint so users with a "buyer" role can reset their deposit back to 0
• Take time to think about possible edge cases and access issues that should be solved
• If somebody is already logged in with the same credentials, the user should be given a
message 'There is already an active session using your account". In this case the user should
be able to terminate all the active sessions on their account via an endpoint i.e. /logout/all
• Attention to security
Evaluation criteria:
• Language/Framework of choice best practices
• Edge cases covered
• Write tests for /deposit. /buy and one CRUD endpoint of your choice
• Code readability and optimization
*****
I prefer it to be done with React js
I have been working as a professional Angular, React and Laravel WordPress developer and in other related sectors for about 4 long years. Among thousands of specialists in this sector, what differs me from others is my problem solving methods.
My uniqueness in creativity and transparency in my work brings positive sights about me to my clients. All of my clients never remained unsatisfied with my work. Being an expert in Frontend and BackendI annex adequate knowledge in maintaining websites.
Furthermore, my efficiency in monitoring, supervising and working as a team player in a project is quite impressive. I have also control over using J Query and PSD2HTML , and UI and UX designing, act as the additives in convincing the clients. For me hard work is a must even when someone possesses all desired skills and I never show procrastination in it.
So, if you think I am capable enough then hire me and let me serve you the best version of me.
Thank you.
Hello, I've read your job post carefully and have interest.
I'm a high skill React/Redux expert.
And I have fully experience Material UI and Tailwind, GraphQL.
So I can give you satisfy in this project.
I've 5 years of React/Redux experience and work for company.
I can work on your time zone and full time.
I'd like thanks for your reply.
Best Regards
Viktor