Welcome to the backend engineer challenge! We would like to thank you for taking the time to work on it. This is your chance to prove that your technical skills are as good as we expect at Oetker Digital (or even better!) ;)
The following is a problem that can be solved in different ways. You need to be creative, come up with the solution you think is best and explain why. There are certain requirements we expect you to fulfill, so please read the instructions carefully.
Have fun!
The vintage record shop 'Oldies but Goldies Berlin' needs a new website. They want to have all their record collection available for their customers to be consulted online.
Customers will be able to see the list of records and search by several fields. The record list will be maintained by the shop administrators.
Design and implement a REST API that provides the following:
- Record creation
- Record update
- Record deletion
- Record search
- You can decide on the search fields you think are meaningful.
- The results must be listed in alphabetical order by artist and record title.
- The list must return the complete information of every record matching the search query.
- If there are no matching results, the endpoint should return an empty array.
- Code should be written in PHP.
- You should use the Symfony framework.
- Extra frameworks with lots of "magic" like API Platform must be avoided. We want to see your own code ;)
- The endpoint returns a JSON response.
- You should use Docker to run your implementation.
- Swagger (OpenAPI) documentation is needed.
- Create a repository in your GitHub account and submit your solution there.
- Write your own README file. Describe your solution, how to run it and add any extra comments you want.
- Everything must be provided in English.
- Once you are finished, please ping your recruiter and provide your repository url. We will start the review asap.
- Your solution works 100% following your instructions.
- Comprehensive tests are included and run successfully.
- Clean code, clear naming and proper code style is implemented.
- Best practices and design patterns are considered.
- Your directions are clear, understandable and reason the chosen solution.
- You have thought about edge cases and error handling.