Hi there! Thank you for taking the time to complete this coding challenge. We understand that life can get busy so, please, spend no more than 3-4 hours working on it. Clone this repository and copy the files to your own GitHub repository then, follow the instructions below to complete the challenge. We look forward to seeing your work!
We asked our latest intern to write an API that returns addresses from the database. However, the code they wrote is not up to our standards in terms of performance, maintainability and security. Your task, as senior engineer, is to:
-
Analyse the code and write up a prioritized list of changes needed to make the application a performant, maintainable and secure minimum viable product (MVP). Don't forget to tell us why you think each change is necessary and how it will improve the application.
-
Implement as many changes from your list as possible, within the given time frame.
-
Add a new endpoint that allows us to add new addresses to the database. This endpoint should accept a JSON payload with the address details and return an appropriate response.
-
Containerize the application.
-
Write down your suggestions for further improvements (moving from an MVP), and sort them by how you would prioritize them (highest priority first).
- Don't worry about setting up a "real" database, you can use the provided in-memory database to store the addresses for this challenge.
- Make sure to document any assumptions you make while working on the challenge.
- Feel free to use any libraries or frameworks you think are appropriate for the task, but please explain your choices in your documentation.
- When you are done, please, send us a link to your GitHub repository with the completed challenge (don't forget to make it public!). We will review your work and get back to you with feedback as soon as possible.