Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Webapp interface #57

Merged
merged 111 commits into from
Mar 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
7e4fb4f
Changed order of quality goals
AbelMH1 Feb 23, 2024
34755fb
Corrected cohesion and spelling errors and restructured section 4
AbelMH1 Feb 23, 2024
86442c0
Reestructured some table headings
AbelMH1 Feb 23, 2024
7f0c9b0
Primera version del un ejemplo con una pregunta y añadida un poco de …
alegarman2002 Feb 24, 2024
588cc02
Añadido un contador de tiempo visual
alegarman2002 Feb 24, 2024
ff3891c
Commit antes de una probable explosion
alegarman2002 Feb 24, 2024
3c528d9
Intento numero 1 de aprobar
alegarman2002 Feb 24, 2024
a7d17d1
Merge branch 'documentation_alejandro_liliana' of https://github.com/…
alegarman2002 Feb 24, 2024
47d84be
The arrow direction has been removed and the image insertion has been…
AbelMH1 Feb 24, 2024
0e5b801
first version of the backend for the question stororage microservice
MarcosBarrilVillaverde Feb 24, 2024
a0ad56c
Minor fix dokerfile
MarcosBarrilVillaverde Feb 24, 2024
b8eb199
Added timestampt to stored questions model
MarcosBarrilVillaverde Feb 25, 2024
e7510d0
Added ports, the gateway container and the new relations between comp…
AbelMH1 Feb 25, 2024
cf7530a
Diagrams theme removed in order for them to be more cohesive with the…
AbelMH1 Feb 25, 2024
1855115
Changed the imports of the diagrams for its generating plantUML code.…
AbelMH1 Feb 25, 2024
36dd1b3
Changed the import of the Technical Context diagram for its generatin…
AbelMH1 Feb 25, 2024
fbe030d
Added whitespaces to improve the formatting of the diagram
AbelMH1 Feb 25, 2024
e2e6f3b
Corrección documentación
uo288574 Feb 26, 2024
93e709b
Merge pull request #42 from Arquisoft/documentation_abel
uo283642 Feb 27, 2024
b2941cf
Inicio del prototipo del almacen de preguntas
marco-qg Feb 29, 2024
f2cea66
First version for the question service API
AbelMH1 Mar 1, 2024
bb0e886
Merge remote-tracking branch 'origin/develop' into storeQuestionService
MarcosBarrilVillaverde Mar 1, 2024
494e137
imagen arbol actualizada
uo288574 Mar 1, 2024
b52653e
cambio documentación apartado 10
uo288574 Mar 1, 2024
fc4b0d9
Fixes on structured of the data stored
MarcosBarrilVillaverde Mar 1, 2024
97c355b
Added new mongodb_wiki database container and a container for the que…
AbelMH1 Mar 1, 2024
1fc1f56
Fixed problem with buttons
alegarman2002 Mar 2, 2024
44d032d
Merge branch 'documentation_alejandro_liliana' of https://github.com/…
alegarman2002 Mar 2, 2024
1913b0d
Merge branch 'documentation_alejandro_liliana' into webapp_interface
alegarman2002 Mar 2, 2024
0c4c976
Added function to return the number of questions requested
AbelMH1 Mar 2, 2024
7923846
Merge branch 'service_question_generator' into webapp_interface
alegarman2002 Mar 2, 2024
301be1a
First try to connect to questiongenerator api
alegarman2002 Mar 4, 2024
b76de84
Added the menu with navigation
alegarman2002 Mar 5, 2024
e8417a7
Avance conexión
marco-qg Mar 7, 2024
e71ea92
Unfortunately, light mode
marco-qg Mar 7, 2024
e8e7da7
added commented data for testing purpose
marco-qg Mar 7, 2024
3534e7d
Minor fixes
MarcosBarrilVillaverde Mar 8, 2024
955981c
Merge branch 'storeQuestionService' of https://github.com/Arquisoft/w…
MarcosBarrilVillaverde Mar 8, 2024
d3104ab
Minor fix
MarcosBarrilVillaverde Mar 8, 2024
2a05891
Changed the way the parameters were received and added more mocked qu…
AbelMH1 Mar 9, 2024
472649b
Merge branch 'service_question_generator' into webapp_interface
AbelMH1 Mar 9, 2024
24df8f2
Added Cors dependency to let the webapp temporaly make request to the…
AbelMH1 Mar 9, 2024
48caf3d
Merge branch 'service_question_generator' into webapp_interface
AbelMH1 Mar 9, 2024
3dc210a
Removed unnecesary line
AbelMH1 Mar 9, 2024
67d4aad
Added query params (hardcoded) and fixed question display
AbelMH1 Mar 9, 2024
cac634d
barra de navegación y pie de página
uo288574 Mar 11, 2024
0f1f85a
connection fixed, pending style improvement
marco-qg Mar 12, 2024
7fde766
commented code for testing purposes
marco-qg Mar 12, 2024
2ccfc61
Style done
marco-qg Mar 12, 2024
4396167
change check answers
uo288574 Mar 12, 2024
173845e
Added the logic to do a simple wikidata query
alegarman2002 Mar 13, 2024
0692855
Added the logic in the api to generate random questions based on the …
alegarman2002 Mar 13, 2024
420ef2b
Merge branch 'service_question_generator' into webapp_interface
alegarman2002 Mar 13, 2024
ac5a2a2
Added call to the question store service API for storing the generate…
AbelMH1 Mar 13, 2024
c0e34cc
Update storeQuestionService/store-q-service.js
MarcosBarrilVillaverde Mar 13, 2024
5c2a97c
Update storeQuestionService/store-q-service.js
MarcosBarrilVillaverde Mar 13, 2024
e1b5a7c
Update storeQuestionService/store-q-service.js
MarcosBarrilVillaverde Mar 13, 2024
419cbc7
Update package.json to delete unused dependencies
MarcosBarrilVillaverde Mar 13, 2024
4001c43
Update store-q-model.js to fix convention names
MarcosBarrilVillaverde Mar 13, 2024
62b6aba
Update store-q-service.js to fix changes in data structure
MarcosBarrilVillaverde Mar 13, 2024
edb3449
Update store-q-service.js to fix post functions route
MarcosBarrilVillaverde Mar 13, 2024
06d5a20
Update storeQuestionService/store-q-service.js to delete unecesary li…
MarcosBarrilVillaverde Mar 13, 2024
e7d1108
Update gateway-service.js added error managment to question service
MarcosBarrilVillaverde Mar 13, 2024
b3f302a
Updated the game so we can have unlimited questions
alegarman2002 Mar 13, 2024
eef9653
Update gatewayservice/gateway-service.js fixed new route in questions
MarcosBarrilVillaverde Mar 13, 2024
a015019
Update storeQuestionService/store-q.test.js Added new route in tests
MarcosBarrilVillaverde Mar 13, 2024
e352872
Update storeQuestionService/store-q.test.js
MarcosBarrilVillaverde Mar 13, 2024
de2e940
Update storeQuestionService/store-q.test.js
MarcosBarrilVillaverde Mar 13, 2024
5d22841
Update storeQuestionService/store-q.test.js
MarcosBarrilVillaverde Mar 13, 2024
bab0682
Update storeQuestionService/store-q.test.js Added new route in tests
MarcosBarrilVillaverde Mar 13, 2024
fe390af
Update storeQuestionService/store-q.test.js Added new route in tests
MarcosBarrilVillaverde Mar 13, 2024
933ce9e
Update storeQuestionService/store-q.test.js Added new route in tests
MarcosBarrilVillaverde Mar 13, 2024
9536c6b
Update gatewayservice/gateway-service.js Added new route in tests
MarcosBarrilVillaverde Mar 13, 2024
40f0795
Update store-q.test.js fixed questions format
MarcosBarrilVillaverde Mar 13, 2024
559b223
Fixed problem of dependencies
alegarman2002 Mar 13, 2024
a0c33a7
Fixed problem with login test apparently
alegarman2002 Mar 13, 2024
cc0cf88
Added the login into the inder for navigation
alegarman2002 Mar 13, 2024
c5681f2
Fixed problems witho second part of text at login and problems with a…
alegarman2002 Mar 13, 2024
ecd16b9
Trying to fix error on how we call th context.js
alegarman2002 Mar 13, 2024
6b1ecae
Fixed Login test, tryung to fix app test
alegarman2002 Mar 13, 2024
d7a0a7a
Return to the previous version of app test
alegarman2002 Mar 13, 2024
4ca2be4
Trying to fix the app text with an update on the index
alegarman2002 Mar 13, 2024
df1e22f
Making the test a bit more simple
alegarman2002 Mar 13, 2024
80cbfe1
Trying to fix again the app text pls kill me
alegarman2002 Mar 13, 2024
5d91629
Deleted useless file
marco-qg Mar 13, 2024
d43156c
Eliminated unussed resources for that moment
alegarman2002 Mar 13, 2024
e5b6677
First try in test for firstGame
alegarman2002 Mar 13, 2024
3e40311
Fixed body-parser problem and commented mock question
marco-qg Mar 13, 2024
95b4d1b
added post history/question. It works, i ve tested it.
marco-qg Mar 13, 2024
1ae5550
Update store-q.test.js fixed
MarcosBarrilVillaverde Mar 13, 2024
cd1e826
Desisto de hacer los test de momento
alegarman2002 Mar 13, 2024
85108d2
Booro los archivos
alegarman2002 Mar 13, 2024
998a6ee
Merge pull request #50 from Arquisoft/storeQuestionService
AbelMH1 Mar 13, 2024
3f5e787
removed history post method
marco-qg Mar 13, 2024
0ba8671
Fixed connection
marco-qg Mar 13, 2024
cefa642
Fixed frontend problems due to format change in questions
marco-qg Mar 13, 2024
f10856f
Improved style
marco-qg Mar 13, 2024
8e4c669
Removing console logs
marco-qg Mar 13, 2024
1bd09d5
Merge branch 'storeQuestionService' of https://github.com/Arquisoft/w…
marco-qg Mar 13, 2024
951564a
sonarcloud problem solved (??)
uo288574 Mar 13, 2024
ff89910
sonarcloud problem solved at menu
uo288574 Mar 13, 2024
efeb758
Merge pull request #56 from Arquisoft/storeQuestionService
AbelMH1 Mar 13, 2024
8b0bbf7
Merge branch 'develop' into service_question_generator
AbelMH1 Mar 13, 2024
4f41232
Removed unnecesary mongoose schema and model
AbelMH1 Mar 13, 2024
da7421e
Removed unnecesary console.log
AbelMH1 Mar 13, 2024
6f7a9f8
Merge pull request #52 from Arquisoft/service_question_generator
marco-qg Mar 13, 2024
7ac26cd
Merge branch 'develop' into webapp_interface
AbelMH1 Mar 13, 2024
38ada23
Eliminated the unnecessary files
alegarman2002 Mar 13, 2024
c2bf00b
Merge pull request #55 from Arquisoft/webapp_interface
AbelMH1 Mar 13, 2024
52663cb
First part of adding the button to see the historic questions
alegarman2002 Mar 13, 2024
bfddeec
add button for stored questions
uo288574 Mar 13, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,17 @@ services:
networks:
- mynetwork

mongodb_wiki:
container_name: mongodb-wiki-${teamname:-defaultASW}
image: mongo
profiles: ["dev", "prod"]
volumes:
- mongodb_wiki_data:/data/db
ports:
- "27018:27017"
networks:
- mynetwork

authservice:
container_name: authservice-${teamname:-defaultASW}
image: ghcr.io/arquisoft/wiq_es6c/authservice:latest
Expand Down Expand Up @@ -39,6 +50,22 @@ services:
environment:
MONGODB_URI: mongodb://mongodb:27017/userdb

questiongeneratorservice:
container_name: questiongeneratorservice-${teamname:-defaultASW}
image: ghcr.io/arquisoft/wiq_es6c/questiongeneratorservice:latest
profiles: ["dev", "prod"]
build: ./questionsservice/questiongeneratorservice
depends_on:
- mongodb_wiki
- storequestionservice
ports:
- "8007:8006"
networks:
- mynetwork
environment:
MONGODB_URI: mongodb://mongodb_wiki:27017/questions
STORE_QUESTION_SERVICE_URL: http://storequestionservice:8004

gatewayservice:
container_name: gatewayservice-${teamname:-defaultASW}
image: ghcr.io/arquisoft/wiq_es6c/gatewayservice:latest
Expand All @@ -55,6 +82,7 @@ services:
environment:
AUTH_SERVICE_URL: http://authservice:8002
USER_SERVICE_URL: http://userservice:8001
STORE_QUESTION_SERVICE_URL: http://storequestionservice:8004

webapp:
container_name: webapp-${teamname:-defaultASW}
Expand Down Expand Up @@ -99,9 +127,24 @@ services:
depends_on:
- prometheus

storequestionservice:
container_name: storequestion-${teamname:-defaultASW}
image: ghcr.io/arquisoft/wiq_es6c/storequestionservice:latest
profiles: ["dev", "prod"]
build: ./storequestionservice
depends_on:
- mongodb
ports:
- "8004:8004"
networks:
- mynetwork
environment:
MONGODB_URI: mongodb://mongodb:27017/storedquestion


volumes:
mongodb_data:
mongodb_wiki_data:
prometheus_data:
grafana_data:

Expand Down
Binary file removed docs/images/03_Technical_Context.png
Binary file not shown.
Binary file removed docs/images/05_Level_3_Diagram.png
Binary file not shown.
Binary file removed docs/images/05_level1Diagram.png
Binary file not shown.
Binary file removed docs/images/05_level2Diagram.png
Binary file not shown.
Binary file removed docs/images/08_domain_model.png
Binary file not shown.
Binary file modified docs/images/QualityTree.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/src/01_introduction_and_goals.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,10 @@ A table with quality goals and concrete scenarios, ordered by priorities
[options="header",cols="1,3"]
|===
|Quality Goal|Description
| _Learnability_ | _Any user must be able to use the app with ease. The interface must remind the user to the one in Saber y Ganar quiz show._
| _Satisfaction_ | _Users will not get repeated questions in at least a hundred questions._
| _Modularity_ | _The application will be divided in modules so that a change on one component has minimal impact on other components._
| _Testability_ | _The application should be able to go through different test and complete them successfully._
| _Learnability_ | _Any user must be able to use the app with ease. The interface must remind the user to the one in Saber y Ganar quiz show._
| _Time behaviour_ | _Users will not have to wait more than 500ms to get a new question._
|===

Expand Down
2 changes: 1 addition & 1 deletion docs/src/02_architecture_constraints.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ See https://docs.arc42.org/section-2/[Architecture Constraints] in the arc42 doc
|*OS/Browser Independence* |The project must be available to the maximum amount of users feasible. That includes support for mainstream OSs (_Windows_, _Linux_, _MacOS_) and browsers. (_Chrome_, _Safari_, _Firefox_, _Edge_)
|*Usage of _REACT_* |The _REACT JS_ framework will be used to develop the front-end of the project.
|*Docker* | The application will operate within a Docker environment.
|*Version Control* |In order of the project to be graded adequately, it must use _GitHub_ as its version control system. The contributions of each team member and agreements reached must be easily traceable.
|*Version Control* |In order for the project to be graded adequately, it must use _GitHub_ as its version control system. The contributions of each team member and agreements reached must be easily traceable.
|*Wikidata* | To generate questions, WikiData would be used as a knowledge base. Wikidata is a free and open knowledge base that can be read and edited by both humans and machines. Wikidata acts as central storage for the structured data of its sister Wikimedia projects, including Wikipedia, Wikivoyage, Wiktionary, Wikisource and others.
|*Continuous integration and delivery* |The development must progress through frequent integration of small changes into the main branch. New features must be automatically deployed with ease. (In our case, using _Docker_)
|===
Expand Down
20 changes: 18 additions & 2 deletions docs/src/03_system_scope_and_context.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ The title of the table is the name of your system, the three columns contain the

****

[cols=3 options="header"]
[cols="1,2,2" options="header"]
|===
|Entity |Input |Output
|*User* | App usage and experience. | The user will introduce and send its credentials every time it creates a new account or logs into an existing one.
Expand All @@ -69,5 +69,21 @@ together with a mapping table showing the relationships between channels and inp

****

image::03_Technical_Context.png[]
[plantuml,"Technical_Context Diagram",png]
----
!pragma layout smetana

actor "User"
node "\t\t\tApp\t\t\t\t"{
rectangle "Web App"
rectangle "REST API"
}
rectangle "Wikidata" #lightblue
database "\nMongoDB\n" as MongoDB #white

User -right- "Web App" : "HTTPS\t"
"Web App" -right- "REST API" : HTTPS (REST)
"REST API" -right-- "MongoDB" : "\tHTTPS"
"Web App" -down- "Wikidata" : " HTTPS (REST)"
----

12 changes: 4 additions & 8 deletions docs/src/04_solution_strategy.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ ifndef::imagesdir[:imagesdir: ../images]
In order to develop the application and adhere to the constraints, we selected the following technologies:

- ReactJS: JavaScript library that streamlines the development of graphical interfaces for web applications.
- TypeScript: Extension of JavaScript, bolstering it with type support for improved development.
- GitHub: Platform offering remote repository services for project development, task management, and version control.
- MongoDB: A non-linear database selected to oversee storage of diverse application contents, with each microservice possessing its dedicated database.
- NodeJS: Facilitates efficient management of asynchronous events, notably beneficial for scalable network applications and database administration.
Expand All @@ -22,13 +21,13 @@ We will use PlantUML and UMLet for creating the documentation's diagrams.

=== Approaches to Achieve Top Quality Goals

[cols="1,2,3"]
[cols="1,2,3" options="header"]
|===
| Quality Goal | Scenario | Solution Approach

| Privacy
| Users seek reassurance in the safety and privacy of their data within our app.
| Ensuring user data security and privacy within the application.
| Scalability
| The application's design must accommodate changes effortlessly throughout its lifecycle.
| Employing a microservices approach to minimize code repetition and enhance understanding of application distribution, ensuring future scalability.

| Usability
| Seamless execution of all application functions is crucial for user satisfaction.
Expand All @@ -38,9 +37,6 @@ We will use PlantUML and UMLet for creating the documentation's diagrams.
| Application architecture must facilitate seamless addition or modification of functionalities with minimal code changes.
| Implementing design patterns and adhering to code conventions to ensure clean and maintainable code. Additionally, prioritizing testing during development for long-term maintainability.

| Scalability
| The application's design must accommodate changes effortlessly throughout its lifecycle.
| Employing a microservices approach to minimize code repetition and enhance understanding of application distribution, ensuring future scalability.

|===

Expand Down
148 changes: 118 additions & 30 deletions docs/src/05_building_block_view.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,13 @@ In the best case you will get away with examples or simple signatures.

=== Level 1: Overall System's whitebox

image::05_level1Diagram.png[Level 1 Diagram]
[plantuml,"Level 1 Diagram",png]
----
!pragma layout smetana

:User: -> [WIQ App] : "Interacts with"
[WIQ App] <.> [WikiData] : "Gets data"
----

==== Motivation

Expand All @@ -71,7 +76,7 @@ Its headline is the name of the black box.
****

[options="header"]
[cols="1,2"]
[cols="1,4"]
|===
|Name |Description
|User
Expand Down Expand Up @@ -110,57 +115,140 @@ according the the following black box template:
****


image::05_level2Diagram.png[Level 2 Diagram]

[plantuml,"Level 2 Diagram",png]
----
!pragma layout smetana

:User:
package "WIQ App" {
:User: -> [WebApp] : " Interacts "
[WebApp] <-> [Gateway Service] : Redirects Requests
[Gateway Service] <--down-> [Game Service] : Plays
[Gateway Service] <-- [Question Historic Service] : Loads data
[Gateway Service] <-- [User Statistics Service] : Loads data
[Gateway Service] <-> [UserAuth Service] : Logs in / Registers
[Game Service] -> [User Statistics Service] : Stores data
[Game Service] <-left-> [Questions Service] : Gets questions
[Questions Service] -up-> [Question Historic Service] : Stores data
}
[Questions Service] <.left.> [WikiData] : " Gets data "
----

==== Motivation

*_WiQ_* application is the general structure of a system in which users will have the possibility to play a video game implementation of the popular RTVE programme, "Saber y Ganar".

==== Contained Building Blocks

[options="header"]
[cols="1,2"]
[cols="1,4" options="header"]
|===
|Name |Description
|Web App
|Layer in which the user will interact directly and which will connect with the different services.
|Questions Service
|Microservice to generate the questions used by the application from WikiData
|Game Service
|Microservice that implements the quiz game
|Question Historic Service
|Microservice that stores the generated questions for later consultation
|User Statistics Service
|Microservice that stores the statistics of the games played by the user.
|Authentification Service
|Authentication microservice that allows the user to register and log in.
|Web App |Layer in which the user will interact directly and which will connect with the different services.
|Gateway Service |Microservice that redirects the requests from the WebApp to its corresponding microservices
|Questions Service |Microservice to generate the questions used by the application from WikiData
|Game Service |Microservice that implements the quiz game
|Question Historic Service |Microservice that stores the generated questions for later consultation
|User Statistics Service |Microservice that stores the statistics of the games played by the user.
|UserAuth Service |Authentication microservices that allows the user to register and log in.
|===

=== Level 3

image::05_Level_3_Diagram.png[Level 3 Diagram]
[plantuml,"Level 3 Diagram",png]
----
!pragma layout smetana

actor "User"
rectangle "Wikidata"

package "WIQ App"{

component "WebApp"
component "Gateway Service" as GatewayS

package "Game Service" {
component "Game Controller"
}

package "User Statistics Service" as USS {
component "Statistics Controller"
database "Database" as USDB
}

package "Questions Historic Service" as QHS{
component "Question Historic Controller" as QHController
database "Database" as QhDB
}
package "Questions Service"{
component "Wikidata Extractor"
component "Questions Generator"
database "Database" as QSDB
}
package "UserAuth Service" {
component "Auth Service"
component "User Service"
database "Database" as UADB
}
}

User -right-> WebApp : Uses
WebApp <-right-> GatewayS: Redirects requests

GatewayS <--up--> "UserAuth Service" : "Handles user\nlogin/registry"
GatewayS <-down-> "Game Service" : "Handles user current game\n"
GatewayS <--up-- "QHS" : "\nReceives generated\nquestions"
GatewayS <--- "USS" : "Receives\t\t\t\nuser statistics\t\t\t"

"Game Service" <---> "Questions Service" : "Receives question petitions,\nsends questions\n\n"
"Game Service" ---> "USS" : "Sends user\t\nstatistics\t\t"
"Questions Service" -up-> "QHS" : "Sends\ngenerated\nquestions"

"Wikidata" .up.> "Wikidata Extractor" : "Returns data"
"Wikidata" <.up. "Wikidata Extractor" : "Queries"
"Wikidata Extractor" --> QSDB
"Questions Generator" <-- QSDB
"Questions Generator" --> QSDB

"QHController" --> QhDB
"QHController" <-- QhDB

"Statistics Controller" --> USDB
"Statistics Controller" <-- USDB

"Auth Service" --> UADB
"Auth Service" <-- UADB
"User Service" --> UADB
"User Service" <-- UADB
----

==== Motivation

To display the inner architecture of the different microservices, as well as how do their components interact with themselves and with other components from other microsystems. All microservices follow the MVC architectural pattern, to the exception of the questions generator service. (since it has no UI to handle)
To display the inner architecture of the different microservices, as well as how do their components interact with themselves and with other components from other microsystems. All microservices follow the MVC architectural pattern, to the exception of those who have no UI to handle.

==== Contained Building Blocks

[options="header"]
[cols="1,2"]
[cols="1,4" options="header"]
|===
|Name |Description
|Questions Generator
|Contains the required templates and proceedings to construct questions. In order to do so, it delegates the Wikidata querying to the Wikidata extractor. When the data is returned, the question is formulated through templates.
|Wikidata Extractor
|Handles extraction and formatting of Wikidata’s output. It’s queries must cover all necessary information in order to construct the question(s), including not only the correct response, but also believable and coherent “decoy responses”.

|User Service
|It retrieves the data from new users and registers them in the database.

|Auth Service
|It retrieves the data from returning users and checks if they are in the database.

|Game Controller
|Handles all the game’s logic; where the user input’s processing takes place. It can request questions to the Questions Microservice, and also gather user statistics, to later be sent to the User Statistics Controller.

|Questions Historic Controller
|Receives the generated questions, and sends them to the database. Besides, it also handles recovering them from the database and sending them where they are needed. (e.g: as response from an API call, or to the UI)

|User Statistics Controller
|Receives various information about the player’s performance in the match. There, some processing may occur before storing it in the database. Also handles retrieving the information and sending it where it’s needed (e.g: as response from an API call, or to the UI).
|Game Controller
|Handles all the game’s logic; where the user input’s processing takes place. It can request questions to the Questions Microservice, and also gather user statistics, to later be set to the User Statistics Controller.
|UI for the game and statistics
|Handles appeareance and presentation. Actions taken by the user are communicated to their respective controllers, that may respond accordingly.

|Questions Generator
|Contains the required templates and proceedings to construct questions. In order to do so, it delegates the Wikidata querying to the Wikidata extractor. It gets the data through the database so when the data is returned, the question is formulated through templates.

|Wikidata Extractor
|Handles extraction and formatting of Wikidata’s output. It’s queries must cover all necessary information in order to construct the question(s), including not only the correct response, but also believable and coherent “decoy responses”. It stores the data retrieved on the database.
|===
Loading