Build a system to search for a cricket player, get player statistics, add players to favourite list and recommend most liked/favourite players to user.
Refer the following URLs to explore more on the cricket player APIs. https://www.cricapi.com/how-to-use.aspx https://www.cricapi.com/how-to-use/player-stats-api.aspx https://www.cricapi.com/how-to-use/player-finder.aspx
A frontend where the user can register/login to the application, find cricket player, get player statistics, add player to favourite list and view recommended players.
A recommendation engine/service should be able to store all the unique favourite players from all the users and maintain counter for number of users added a particular player into favourite list.
- UserService - should be able to manage user accounts.
- UI (User interface) - should be able to
- Search a player by name
- View player statistics
- Add a player to favourite list
- View favourite players
- View recommended players
- UI should be responsive which can run smoothly on various devices
- FavouriteService - should be able to store all the favourite players for a user
- PlayerRecommendationService - should be able to store all the unique favourite players from all the users and maintain counter for number of users added a particular player into favourite list.
- Spring Boot
- MySQL, MongoDB
- API Gateway
- Eureka Server
- Message Broker (RabbitMQ)
- Angular
- CI (Gitlab Runner)
- Docker, Docker Compose
-
Building frontend:
- Building responsive views:
- Register/Login
- Search for a player
- Player list - populating from external API
- Build a view to show favourite players
- Build a view to show recommended players
- Using Services to populate these data in views
- Stitching these views using Routes and Guards
- Making the UI Responsive
- E2E and unit tests
- Writing CI configuration file
- Dockerize the frontend
- Building responsive views:
-
Building the UserService
- Creating a server in Spring Boot to facilitate user registration and login using JWT token and MySQL
- Writing swagger documentation
- Unit Testing
- Write CI Configuration
- Dockerize the application
- Write docker-compose file to build both frontend and backend application
-
Create an API Gateway which can serve UI and API Request from same host
-
Building the Favourite Service
- Building a server in Spring Boot to facilitate CRUD operation over favourite players stored in MongoDB
- Writing Swagger Documentation
- Build a Producer for RabbitMQ which i. Produces events like what user added to favourite list
- Write Test Cases
- Write CI Configuration
- Dockerize the application
- Update the docker-compose
-
Building the PlayerRecommendationService
- Building a Consumer for RabbitMQ
- i. On a new event generated Update the recommendations in the system. Store the recommendation list in MongoDB.
- ii. Maintain list of unique recommended players based on what user added into favourite list and keep counter for number of users added a particular player into favourite list
- Build an API to get Recommendations
- Writing Swagger Documentation
- Write Test Cases
- Write CI Configuration
- Dockerize the application
- Update the docker-compose
- Update the API Gateway
- Building a Consumer for RabbitMQ
-
Create Eureka server and make other services as client
-
Demonstrate the entire application