This is a solution implemented for the problem. https://drive.google.com/file/d/1eHNjso1a8TlXDUXtmVlv__bBI6P8CVA3/view
- Download and install docker.
- Download and install docker-compose.
- Open root directory in the terminal and run
sudo docker-compose -f docker-compose.yml up --build
- The server will start running on port 8080 localhost. Free the port or change Nginx configuration file to a suitable port.
- Open
http://localhost:8080/docs
to view documention.
- Use the test.csv file included in helpers folder to check data ingestion process.
- Use the postman collection in helpers folder to test the API.
High Level Desgign: https://drive.google.com/file/d/1YkiyqM7bGDho6GhQ6p1ISH2IjB-z_4Xu/view?usp=sharing
Low Level Desing: https://drive.google.com/file/d/16dtgEZP5OEVjw3XGBn67n67ZtbhZKOqs/view?usp=sharing
Open the file with app.diagrams.net to view and understand the High Level and Low Level design of the APIs.
You can try implementing the following features, I'll do it in sometime, probably:
- Add logging functionality.
- Unit tests (at least).
- Functional tests for cross service APIs.
- Design a better sorting mechanism for sort contents by reads and likes.
- Add pagination for the contents.
- Improve documenation to include error responses.
You can add your suggestion with a PR too.