diff --git a/images/GameView.png b/images/GameView.png index 51bfb03a..14216090 100644 Binary files a/images/GameView.png and b/images/GameView.png differ diff --git a/images/HomeView.png b/images/HomeView.png index 050b4457..9b42ca82 100644 Binary files a/images/HomeView.png and b/images/HomeView.png differ diff --git a/images/UserView.png b/images/UserView.png index 8d9bc1e4..4d025b9b 100644 Binary files a/images/UserView.png and b/images/UserView.png differ diff --git a/images/deployment_diagram.svg b/images/deployment_diagram.svg index 1837f748..4f07e88e 100644 --- a/images/deployment_diagram.svg +++ b/images/deployment_diagram.svg @@ -1 +1 @@ -
Actor
Actor
Device
Device
Browser
Browser
WebApp
WebApp
GatewayService
GatewayService
Microservices
Microservices
QuestionGenerationService
QuestionGenerationService
AuthService
AuthService
UserService
UserService
Docker container
Docker container
Docker container
Docker container
QuestionService
QuestionService
Docker container
Docker container
GameService
GameService
Docker container
Docker container
Docker container
Docker container
MongoDB
MongoDB
Wikidata
Wikidata
Azure VM
Azure VM
Docker container
Docker cont...
Docker container
Docker cont...
Docker container
Docker cont...
Text is not SVG - cannot display
\ No newline at end of file +
Actor
Actor
Device
Device
Browser
Browser
WebApp
WebApp
GatewayService
GatewayService
Microservices
Microservices
UserService
UserService
Docker container
Docker container
AuthService
AuthService
Docker container
Docker container
QuestionService
QuestionService
Docker container
Docker container
GameService
GameService
Docker container
Docker container
QuestionGenerationService
QuestionGenerationService
Docker container
Docker container
FriendsService
FriendsService
Docker container
Docker container
MongoDB
MongoDB
Wikidata
Wikidata
Azure VM
Azure VM
Docker container
Docker cont...
Docker container
Docker cont...
Docker container
Docker cont...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/index.html b/index.html index cf7046bf..ee86253b 100644 --- a/index.html +++ b/index.html @@ -1277,7 +1277,7 @@

7.1. Infrastructure Level 1

7.2. Motivation:

-

The system is based on a microservices architecture with six independent services, each responsible for a specific aspect of functionality. One service is the graphical interface (WebApp), which is responsible for the presentation layer of a web application. The user service is responsible for managing user-related functionalities, while the auth service is responsible for authenticating users. The question generation service uses Wikidata, a free and open database, to generate questions automatically. Finally, the question service allows to save and retrieve information from the generated questions and the game service does the same for game-related data and statistics. MongoDB, a NoSQL database, is used to store the information.

+

The system is based on a microservices architecture in which each service is responsible for a specific aspect of functionality. One service is the graphical interface (WebApp), which is responsible for the presentation layer of a web application. The user service is responsible for managing user-related functionalities, while the auth service is responsible for authenticating users. The question generation service uses Wikidata, a free and open database, to generate questions automatically. The Friends service is responsible for managing the social aspect of the application, allowing users to connect with their friends. The question service allows to save and retrieve information from the generated questions, and the game service does the same for game-related data and statistics. MongoDB, a NoSQL database, is used to store the information. All microservices connect to the graphical interface through an API Gateway.

@@ -1334,6 +1334,10 @@

7.4. Mapping of Building

 The microservice responsible for managing users.

+

Friends service

+

 The microservice responsible for managing the social aspect of the application. It allows users to connect with their friends.

+ +

Auth service

 The microservice responsible for managing the authentication of the users.

@@ -1350,6 +1354,10 @@

7.4. Mapping of Building

8. 1.0 Designs

+
+

In the user interface concept, we have opted for a darker shade that is more pleasing to the eye, very easy to use, and fully adapted to any desktop and mobile device. +Below are images of some of these interfaces.

+

8.1. User Page

@@ -1442,19 +1450,23 @@

10. Architecture Decisions

Docker

-

It is decided to use Docker due to its popularity in the professional field and its ease of execution thanks to the configuration files provided by the subject’s faculty.

+

It is decided to use Docker due to its popularity in the professional field and its ease of execution thanks to the configuration files provided by the subject’s faculty. Docker allows the project to be encapsulated into portable containers, ensuring consistent runtime environments across development, testing, and production.

+ + +

Microservices Architecture

+

Breaking down the application into independently deployable services offers flexibility, scalability, and fault isolation. Microservices promote team autonomy and facilitate the adoption of diverse architecture decisions for each component. It also facilitates teamwork, by dividing members' tasks, mainly focused on one service per task.

MongoDB

-

It is decided to use MongoDB based on the recommendation of the faculty, as it is one of the most popular NoSQL databases and because it fits perfectly with the application’s needs.

+

It is decided to use MongoDB based on the recommendation of the faculty, as it is one of the most popular NoSQL databases and because it fits perfectly with the application’s needs. MongoDB’s flexible document model aligns well with the application’s data requirements, providing scalability and performance benefits.

NodeJS

-

It is decided to use NodeJS since it is the recommended option by the subject’s faculty and one of the most widely used technologies in this area of web applications, thus having extensive documentation and examples available on the Internet.

+

It is decided to use NodeJS since it is the recommended option by the subject’s faculty and one of the most widely used technologies in this area of web applications, thus having extensive documentation and examples available on the Internet, that extensive library ecosystem and community support offer ample resources for building robust server-side logic.

React

-

It is decided to use React since it is the recommended option by the subject’s faculty.

+

It is decided to use React since it is the recommended option by the subject’s faculty. React optimizes rendering performance, ensuring a responsive user interface for the web application.

@@ -1569,11 +1581,15 @@

12.1. Risks

Lack of time

-

Not planning work well can result in difficulties meeting deadlines

+

Not planning work well can result in difficulties meeting deadlines.

Use of unknown technologies

-

The use of languages and technologies unknown to group members can make it difficult to perform assigned tasks

+

The use of languages and technologies unknown to group members can make it difficult to perform assigned tasks.

+ + +

Non-optimal design

+

Poorly considered design decisions can lead to a fragile or difficult-to-scale architecture, leading to long-term maintenance issues.

@@ -1596,6 +1612,18 @@

12.2. Technical debts

Insufficient documentation

A lack of clear documentation about code and architecture can make it difficult to understand and maintain code, leading to additional work.

+ +

Lack of refactoring

+

The accumulation of redundant or outdated code can hinder future modifications and improvements, increasing the technical complexity of the project.

+ + +

Poor test coverage

+

The absence of adequate test coverage can result in software that is prone to bugs and vulnerabilities that go undetected during the development.

+ + +

Bug pile-up

+

Failure to properly resolve known bugs during development can result in code that is more problem-prone.

+
@@ -1637,6 +1665,22 @@

13. Glossary

MongoDB

NoSQL database management system used in the application

+ +

Continuous Integration (CI)

+

Development practice where developers merge their code changes into a shared repository, triggering automated builds and tests to detect integration errors early in the development process.

+ + +

Microservices

+

Architectural style where an application is composed of loosely coupled, independently deployable services that are organized around business capabilities. Each service represents a small, focused component.

+ + +

Session Management

+

The process of handling and maintaining user session information between requests. It involves managing user information during it’s interaction with the web application.

+ + +

Scalability

+

The ability of a system to handle increased workload or demand by adding resources without impacting performance or availability.

+