Build a system to manage and recommend GIFs to a user. Refer https://giphy.com/
- The application needs to fetch gifs from https://developers.giphy.com/docs/
- A frontend where the user can search, view and bookmark gifs.
- A user can add a gif to bookmark and should be able to view bookmark list.
- A recommendation service should be able to store all the unique bookmarked gifs from all the users and maintain counter for number of users added a particular gifs into bookmark list.
- An option to view recommended gifs should be available on frontend.
- AccountManager - Should be able to manage user accounts
- GipherUI -
- User should be able to
- search GIFs
- bookmark GIFs
- should be able to see bookmarked GIFs
- Application should be a responsive which can smoothly run on mobile devices.
- GipherManager - Application should be able to store all his
- bookmarks
- searches
- GipherRecommenderSystem - should be able to store all the unique bookmarked gifs from all the users and maintain counter for number of users added a particular gifs into bookmark list.
- Spring Boot
- MySQL, MongoDB
- API Gateway
- Eureka Server
- Message Broker (RabbitMQ)
- Angular
- CI (Gitlab Runner)
- Docker, Docker Compose
-
Building Frontend:
- Building Responsive Views:
- Build a View to show all GIF’s
- GIF’s - Populating from external api
- Recommended GIF’s - Populating from GipherRecommenderSystem
- Build a view to show bookmarked gifs
- A view to authenticate users
- 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
- Dockerizing the frontend
-
Building the AccountManager
- Creating a server in Spring Boot to facilitate 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 GipherManager
- Building a server in Spring Boot to facilitate CRUD operation over GIF’s and bookmarked resources stored in MongoDB
- Writing Swagger Documentation
- Build a Producer for RabbitMQ which
- Produces events like what user bookmarked
- Write Test Cases
- Write CI Configuration
- Dockerize the application
- Update the docker-compose
-
Building a GipherRecommenderSystem
- 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 gifs based on what user added into bookmark and keep counter for number of users added a particular gif into bookmark 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
-
Create Eureka server and make other services as client
-
Demonstrate the entire application
-
How to run
-
Create network: Run docker network create --subnet=172.18.0.0/16 giphernet
-
Compose Navigate to root directory /gipher. Run docker-compose up
-
-
Create images
-
Gipher UI: Navigate to gipher/GipherUI directory. Run docker build -t akizhaku/gipherui:v3 .
-
Account manager: Navigate to gipher/accountmanager. Run docker build -t akizhaku/gipher-accountmanager:v3 .
-
Gipher manager: Navigate to gipher/giphermanager Run docker build -t akizhaku/gipher-manager:v3 .
-
Gipher recommender: Navigate to gipher/gipherrecommendersystem Run docker build -t akizhaku/gipher-recommender:v3 .
-
Eureka: Navigate to gipher/eureka-naming-server Run docker build -t akizhaku/gipher-eureka:v2 .
-
Zuul: Navigate to gipher/zuul-api-gateway-server Run docker build -t akizhaku/gipher-zuulapi:v2 .
-
-
View images Run docker images
-
Push to repository Run docker push akizhaku/gipherui:v3 Run docker push akizhaku/gipher-accountmanager:v3 Run docker push akizhaku/gipher-manager:v3 Run docker push akizhaku/gipher-recommender:v3 Run docker push akizhaku/gipher-eureka:v2 Run docker push akizhaku/gipher-zuulapi:v2