-
Notifications
You must be signed in to change notification settings - Fork 0
Architecture
Kwiz
is a cross-platform application built using the Ionic framework and React. This allows for easy deployment to both web and mobile platforms without having to specifically optimize code for each deployment.
The backend of the application is based on Nest.js and communicates with the frontend using GraphQL. Both Ionic and Nest.js are based on Node.js and TypeScript, which enables a seamless switch between projects while sharing much of the auxiliary code for development and deployment.
The data backing the application is be provided by two microservices based on the minimal micro framework for Node.js. Each of these microservices provides different data related to movies. The metadata-service
provides key information about movies and is connected to a postgres database. The poster-service
on the other hand provides movie posters for specific IMDb IDs. This service has no database, but talks directly to another API (OMDB API). Both services expose a REST-API for data fetching. The backend will fetch data from these microservices independently and provide the game with all data through the unified GraphQL endpoint.
Applying a microservice architecture allows us to profit in several areas:
- Modularity: Each service has one job and is isolated from the others, making development and testing easier
- Scalablity: Each service runs, and can be scaled, independent of the others
- Development: As the services are independent, the team can work in parallel and with distributed responsibilities
Topic | Description |
---|---|
Ionic App | Describes the frontend of Kwiz, the Ionic App. |
Nest API | Describes the main API of Kwiz, the Nest API. |
Metadata Service | Describes one of the data sources for Kwiz. |
Poster Service | Describes one of the data sources for Kwiz. |