ListFlix

ListFlix is a microservices-based movie information and watchlist application. It features a GraphQL API for movie information and watchlist management.

Features

ListFlix features the following main functionalities:

  • Movie Explorer: Allows users to browse and search for information about movies.
  • Review: Allows users to view and post reviews about movies.
  • Watchlist: Allows users to create and manage a watchlist of movies they want to watch.

Architecture

The ListFlix project follows a microservices architecture, consisting of the following services:

  • movie-detail-service: Microservice for retrieving detailed information about movies.
  • review-service: Microservice for retrieving and creating movie reviews.
  • watchlist-service: Microservice for creating and managing user watchlists.
  • identity-service: Microservice for managing user authentication and authorization.
  • api-gateway: API gateway for routing requests to the appropriate service.

The microservices architecture is characterized by its ability to break down a large system into smaller, more manageable services that can be developed and deployed independently. The microservices architecture provides benefits such as improved scalability, fault tolerance, and flexibility.

The movie-detail-service microservice is responsible for retrieving detailed information about movies. It interacts with external APIs in order to retrieve movie data.

The review-service microservice is responsible for retrieving and creating movie reviews. It interacts with the movie-detail-service microservice in order to retrieve movie data.

The watchlist-service microservice is responsible for creating and managing user watchlists. It interacts with the review-service microservice in order to retrieve review data.

The identity-service microservice is responsible for managing user authentication and authorization. It generates JSON Web Tokens (JWTs) that are used to authenticate users for subsequent requests. It interacts with the api-gateway in order to authenticate and authorize requests.

The api-gateway is responsible for routing requests from the client to the appropriate microservice based on the request type and path. It also performs authentication and authorization checks on each request by verifying the JWT token generated by the identity-service microservice. This ensures that only authenticated and authorized users can access the various features of the app.

Technology Stack

The ListFlix project uses the following technologies:

  • Java and Spring Boot for the microservices.
  • Netflix Eureka for service discovery.
  • Spring Cloud Gateway for the API gateway.
  • Netflix Hystrix for circuit breaking and fault tolerance.
  • GraphQL for the user authentication and watchlist management API.
  • React for the frontend.
  • PostgreSQL for the databases.

License

The ListFlix project is licensed under the MIT license.