This basic web API application serves as a simplified model simulating typical payment catalog operations. Despite its simplicity, the application contains several coding issues that need to be addressed before this application can be included in any CI/CD pipeline and deployed to a production environment. This test is designed to see the candidate's ability to prioritize and address issues in a given codebase while also respecting time constraints. We recognize that not every task outlined in this documentation can be completed within the allotted time.
Your task is to identify and resolve the issues in this API using best practices in API development, focusing on the following priorities:
- Time constraint : Make sure that time constraints are respected.
- Unit Testing: Ensure the code is testable by implementing unit tests.
- Refactorings: Enhance overall code quality and projects structure to make them more robust and maintainable.
- Separation of responsibilities: Ensure that functionalities are properly separated into layers, preventing any layer from taking on multiple responsibilities.
- API Specs: Improve readability and structure by adhering to RESTful API conventions and documentation.
- Functional Testing: Implement functional tests to ensure the API functions as expected.
- SOLID: Ensure full compliance with SOLID design principles.
- Caching: Implement caching mechanisms to reduce database load.
- Containerization: Set up configurations for containerizing the application.
- Logging and monitoring: Implement logging and monitoring capabilities for better observability.
- Database management: The application uses EF Core with an in-memory database context for testing. Database management improvements are not within the scope.
- Authentication: Authentication is not required for this exercise.
- Create a new branch from the master branch.
- Address the issues to improve code quality.
- Submit a pull request to the master branch, explaining the changes made and the reasons behind them.