Skip to content

Commit

Permalink
merge with dev
Browse files Browse the repository at this point in the history
  • Loading branch information
pelazas committed Apr 3, 2024
2 parents 7170684 + a0ba292 commit f18d0ea
Show file tree
Hide file tree
Showing 16 changed files with 166 additions and 183 deletions.
Binary file modified docs/images/QualityAttributesTree.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/WikiDataQuery.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/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
// configure EN settings for asciidoc
include::src/config.adoc[]

= image:arc42-logo.png[arc42] Template
= image:arc42-logo.png[arc42] Wiq_en2a
:revnumber: 8.2 EN
:revdate: January 2023
:revremark: (based upon AsciiDoc version)
Expand Down
25 changes: 2 additions & 23 deletions docs/src/01_introduction_and_goals.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ The project is a quizz game based on the Spanish TV show "Saber y ganar", the us

=== Requirements Overview




* Users will be able to create an account and log in
* Each question must have a prize associated to it
* Accesible through the web
Expand All @@ -21,18 +18,10 @@ The project is a quizz game based on the Spanish TV show "Saber y ganar", the us
* Se habilitarán salas de juego en tiempo real para el modo multijugador





=== Quality Goals




//This table is just a placeholder, replace it with real quality goals once discussed !!!



image::01_2_iso-25010-topics-EN.drawio.png["Categories of Quality Requirements"]

(based upon the ISO 25010 standard):
Expand All @@ -45,23 +34,13 @@ image::01_2_iso-25010-topics-EN.drawio.png["Categories of Quality Requirements"]
|===





=== Stakeholders



[options="header"]
|===
|Role/Name|Contact|Expectations
| _Wikidata_ | _Wikidata.org_ | _Public exposure by the use of their services deriving in a greater demand of said services_
| _Uniovi's Software Architecture Teacher council_ | [email protected]_ | _Provide their students (development team) with a practical experience about the use of Software architecture in projects and making sure the have understood the concepts of it_
| _Uniovi's Software Architecture Teacher council_ | | _Provide their students (development team) with a practical experience about the use of Software architecture in projects and making sure the have understood the concepts of it_
|_Development Team_||_Acquire experience in the development process of Software Architecture and pass the subject to complete their studies_
|_Users_|_Anyone who uses the app_|_Test their knowledge on a functional and easy to use quizz game app_
|===



=== End

|===
4 changes: 1 addition & 3 deletions docs/src/04_solution_strategy.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,12 @@ This section aims to describe the strategies decided by the team.
=== Technologies
The following list names the technologies selected:

- *Arc42:* this is a template for documentation and communication of software and system architectures
- *TypeScript:* free and open-source high-level programming languaage deriving from JavaScript. The former provides tools that JavaScript does not. It will be used to program the client part of the application.
- *React:* free and open-source front-end JavaScript library for building user interfaces based in components. It allows building complex interfaces in a simpler way, being flexible and easy to maintain.
- *Docker:* set of platform as a service products that use OS-level virtualization to deliver software in packages called containers. It will be used to deploy the application.
- *MongoDB:* non-relational document database that provides support for JSON-like storage. It has drivers for major programming languages and development environments.
- *NodeJS:* cross-platform, opens-source JavaScript library for the server layer that provides the tools to implement the application. It has a large and active community that may be usefull in difficult times.
- *ExpressJS:* nodejs web application framework that provides a robust set of features for web and mobile applications.
- *Wikidata:* collaboratively edited multilingual knowledge graph. It's a common source of open data that anyone can use. It also can be read and edited by both humans and machines.
- *Wikidata Query Service:* Wikimedia implementation of SPARQL server to service queries for Wikidata and other data sets.

=== Organizational
- *Weekly meetings:* to maintain a well communicated team so all are aware of the decissions and team progress.
Expand Down
55 changes: 3 additions & 52 deletions docs/src/08_concepts.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,62 +4,13 @@ ifndef::imagesdir[:imagesdir: ../images]
== Cross-cutting Concepts


[role="arc42help"]
****
.Content
This section describes overall, principal regulations and solution ideas that are relevant in multiple parts (= cross-cutting) of your system.
Such concepts are often related to multiple building blocks.
They can include many different topics, such as
* models, especially domain models
* architecture or design patterns
* rules for using specific technology
* principal, often technical decisions of an overarching (= cross-cutting) nature
* implementation rules
.Motivation
Concepts form the basis for _conceptual integrity_ (consistency, homogeneity) of the architecture.
Thus, they are an important contribution to achieve inner qualities of your system.
Some of these concepts cannot be assigned to individual building blocks, e.g. security or safety.
.Form
The form can be varied:
* concept papers with any kind of structure
* cross-cutting model excerpts or scenarios using notations of the architecture views
* sample implementations, especially for technical concepts
* reference to typical usage of standard frameworks (e.g. using Hibernate for object/relational mapping)
.Structure
A potential (but not mandatory) structure for this section could be:
* Domain concepts
* User Experience concepts (UX)
* Safety and security concepts
* Architecture and design patterns
* "Under-the-hood"
* development concepts
* operational concepts
Note: it might be difficult to assign individual concepts to one specific topic
on this list.
image::08-Crosscutting-Concepts-Structure-EN.png["Possible topics for crosscutting concepts"]
.Further Information
See https://docs.arc42.org/section-8/[Concepts] in the arc42 documentation.
****


=== WikiData Query Service

image::WikiDataQuery.png["WikiData Query Service"]
* Image obtained from link:https://wikitech.wikimedia.org/wiki/Wikidata_Query_Service/Runbook[Wikitech]

The Wikidata Query Service (WDQS) is a powerful tool that provides access to the data contained in Wikidata. It uses SPARQL, a semantic query language for database.
We used this service to generate random questions from a template.


=== Design and UI
Expand Down
3 changes: 1 addition & 2 deletions docs/src/10_quality_requirements.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,9 @@ image::QualityAttributesTree.PNG["Quality Attributes Tree"]

|Usability(QG1)| Ease of use| Ease of use for the user|
| |Ease of Learning| The standard functions should be as easy and intuitive to use as possible without the need for lengthy prior instruction| SC1
| |Compressible questions| The system shall generate compressible questions using information from Wikidata|SC2
|Performance(QG2)| Responsiveness| Pages shoud load at a resonable time.\n During the game the answers to the questions must be processed by the system quickly|
| |Robustness| The system shall work reliable under all specified environment and operating conditions.|
|Question Generation|Compressible questions| The system shall generate compressible questions using information fomr Wikidata|SC2
| |Question Variety| The system shall generate questions based on different fields of knowledge keeping the from getting repetitive|
|Security(QG3)|Data Protection|The user’s data should be protected and not accesible by anyone else|
|===

Expand Down
48 changes: 9 additions & 39 deletions docs/src/12_glossary.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,13 @@ ifndef::imagesdir[:imagesdir: ../images]

[[section-glossary]]
== Glossary

[role="arc42help"]
****
.Contents
The most important domain and technical terms that your stakeholders use when discussing the system.
You can also see the glossary as source for translations if you work in multi-language teams.
.Motivation
You should clearly define your terms, so that all stakeholders
* have an identical understanding of these terms
* do not use synonyms and homonyms
.Form
A table with columns <Term> and <Definition>.
Potentially more columns in case you need translations.
.Further Information
See https://docs.arc42.org/section-12/[Glossary] in the arc42 documentation.
****
[role="arc42help"]
****
[cols="e,2e" options="header"]
[options="header",cols="1,3"]
|===
|Term |Definition
|<Term-1>
|<definition-1>
|<Term-2>
|<definition-2>
|===
****
|Term|Definition
|Gateway|Converst information, data or other communications from one protocol or format to another.
|Facade pattern|Analogous to a facade in architecture, a facade is an object that serves as a front-facing interface masking more complex underlying or structural code.
|JavaScript|An object-oriented computer proframming language commonly used to create interactive effects within web browsers.
|Database|Structured set of data held in a computer.
|Prototipe|A model of the views for the web application.
|Query|Question or request for information expressed in a formal manner. The retrieved information comes from a database.
|===
9 changes: 9 additions & 0 deletions game/groupservice/GroupController.js
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,15 @@ let GroupController = {
} catch(error){
res.status(500).json({error: error.message})
}
},
getGroups: async (req, res) => {
try{
// get all the groups
const groups = await Group.find()
res.json(groups)
} catch(error){
res.status(500).json({error: error.message})
}
}
}

Expand Down
1 change: 1 addition & 0 deletions game/groupservice/group-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ app.post('/joinGroup', GroupController.joinGroup);
app.post('/leaveGroup', GroupController.leaveGroup);
app.post('/createGroup', GroupController.createGroup);
app.get('/getGroup/:uuid', GroupController.getGroup);
app.get('/getGroups', GroupController.getGroups);

const server = app.listen(port, () => {
console.log(`Group Service listening at http://localhost:${port}`);
Expand Down
12 changes: 10 additions & 2 deletions game/groupservice/postman/Groups.postman_collection.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,14 @@
}
},
"url": {
"raw": "http://localhost:8005/join",
"raw": "http://localhost:8005/joinGroup",
"protocol": "http",
"host": [
"localhost"
],
"port": "8005",
"path": [
"join"
"joinGroup"
]
}
},
Expand Down Expand Up @@ -109,6 +109,14 @@
}
},
"response": []
},
{
"name": "Get all groups",
"request": {
"method": "GET",
"header": []
},
"response": []
}
]
}
9 changes: 9 additions & 0 deletions gatewayservice/gateway-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,15 @@ app.get('/getGroup/:uuid', async (req, res) => {
}
})

app.get('/getGroups', async (req, res) => {
try{
const groupResponse = await axios.get(groupServiceUrl+'/getGroups');
res.json(groupResponse.data);
}catch(error){
res.status(500).json({ error: error.message });
}
})


// Start the gateway service
const server = app.listen(port, () => {
Expand Down
28 changes: 24 additions & 4 deletions gatewayservice/postman/Gateway.postman_collection.json
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
"header": [],
"body": {
"mode": "raw",
"raw": "{\r\n \"creatorUUID\": \"445541d7-aa01-46a5-8a08-506ae8609b91\",\r\n \"groupName\": \"Grupo17\",\r\n \"description\": \"grupo tekila oleole\",\r\n \"isPublic\": false\r\n}",
"raw": "{\r\n \"creatorUUID\": \"905aa11b-fd0c-4567-8fe4-e64dac7d96e8\",\r\n \"groupName\": \"GrupoMESSI\",\r\n \"description\": \"grupo tekila oleole\",\r\n \"isPublic\": false\r\n}",
"options": {
"raw": {
"language": "json"
Expand Down Expand Up @@ -105,7 +105,7 @@
"header": [],
"body": {
"mode": "raw",
"raw": "{\r\n \"uuid\": \"4af4d73c-6d45-47b5-bfc8-5f530e621fa6\",\r\n \"groupName\": \"Grupo 2\",\r\n \"joinCode\": \"ppf4\"\r\n}",
"raw": "{\r\n \"uuid\": \"58cd0585-e578-4f97-bfe9-eacdaee33ddc\",\r\n \"groupName\": \"GrupoMESSI\",\r\n \"joinCode\": \"bxUs\"\r\n}",
"options": {
"raw": {
"language": "json"
Expand All @@ -130,7 +130,19 @@
"name": "Get group",
"request": {
"method": "GET",
"header": []
"header": [],
"url": {
"raw": "http://localhost:8000/getGroup/180e8f22-fc4d-4de4-bfe1-e4c244e3b7dd",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"getGroup",
"180e8f22-fc4d-4de4-bfe1-e4c244e3b7dd"
]
}
},
"response": []
},
Expand All @@ -141,7 +153,7 @@
"header": [],
"body": {
"mode": "raw",
"raw": "{\r\n \"expelledUUID\": \"4af4d73c-6d45-47b5-bfc8-5f530e621fa6\",\r\n \"adminUUID\": \"c77b2bde-1834-49f3-9775-3569eb1e1c6d\",\r\n \"groupName\": \"Grupo 2\"\r\n}",
"raw": "{\r\n \"expelledUUID\": \"58cd0585-e578-4f97-bfe9-eacdaee33ddc\",\r\n \"adminUUID\": \"905aa11b-fd0c-4567-8fe4-e64dac7d96e8\",\r\n \"groupName\": \"GrupoMESSI\"\r\n}",
"options": {
"raw": {
"language": "json"
Expand All @@ -161,6 +173,14 @@
}
},
"response": []
},
{
"name": "Get groups",
"request": {
"method": "GET",
"header": []
},
"response": []
}
]
}
Loading

0 comments on commit f18d0ea

Please sign in to comment.