The original documentation containing the full challenge description is here.
Each system component (service or client) is documented in its respective repository:
-
👤 User Service repository
-
⭐ Rating Service repository
-
🎥 Movie Service repository
-
🔑 Authentication Service repository
-
💻 Client repository
In order to run the system locally, there are two simple alternatives. Note that both options require Docker:
1. From this directory, run:
make compose
This command will spin up all the containerized components.
2. See the documentations to learn how to start each service or client independently. For the databases, either you run your own instances of MongoDB and Redis or just run:
make run-db
This command will spin up all the 3 MongoDB and one Redis containers.
To populate the database with 1M+ movies data, run:
cd services/movie && make migrate
The dataset used in this task is provided by TMDB under ODC Attribution License (ODC-By).
- The backend should expose RESTful endpoints to handle user input and return movie ratings.
- The system should store data in a database. You can use any existing dataset or API to populate the initial database.
- Implement user endpoints to create and view user information.
- Implement movie endpoints to create and view movie information.
- Implement a rating system to rate the entertainment value of a movie.
- Implement a basic profile where users can view their rated movies.
- Include unit tests to ensure the reliability of your code.
- Ensure proper error handling and validation of user inputs.
- Implement authentication and authorization mechanisms for users.
- Provide documentation for your API endpoints using tools like Swagger.
- Implement logging to record errors and debug information.
- Implement caching mechanisms to improve the rating system's performance.
- Implement CI/CD quality gates.
- Update/delete/list User endpoints
- Update/delete/list Movie endpoints
- Monitoring/observability
- GraphQL or an API Gateway/Routing Service and communication through gRPC
- Recommendation Service
- Production-ready WebApp