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 favouriteGIF gifs.
- A user can add a gif to favouriteGIF and should be able to view favouriteGIF 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 favouriteGIF list.
- An option to view recommended gifs should be available on frontend.
- AccountManager : http://[IP/localhost]:1002
- GipherManager : http://[IP/localhost]:1000
- GipherRecommendationsSystem : http://[IP/localhost]:1001
- Eureka Server : http://[IP/localhost]:9999
- Zuul Server : http://[IP/localhost]:9090
- GipherUI : http://[IP/localhost]:8080
Follow following steps to run gipher projct
- Clone repository
- plesae make sure all backend services (mysql and mongo ) are stopped and there are no containers and images in system conflicting with gipher application containers.
- navigate to the root directory containing docker compose file
- run command
docker-compose up
- navigate to
http://localhost:8080
to see gipher ui frontend.
- AccountManager - Should be able to manage user accounts
- GipherUI -
- User should be able to
- search GIFs
- favouriteGIF 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 favouriteGIF 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 favouriteGIF and keep counter for number of users added a particular gif into favouriteGIF 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