diff --git a/docs/images/08-Domain-Model.png b/docs/images/08-Domain-Model.png deleted file mode 100644 index 76c487b7..00000000 Binary files a/docs/images/08-Domain-Model.png and /dev/null differ diff --git a/docs/images/Deployed-Infrastructure.png b/docs/images/Deployed-Infrastructure.png deleted file mode 100644 index 12fec7fe..00000000 Binary files a/docs/images/Deployed-Infrastructure.png and /dev/null differ diff --git a/docs/src/07_deployment_view.adoc b/docs/src/07_deployment_view.adoc index a161d91c..c5f1a176 100644 --- a/docs/src/07_deployment_view.adoc +++ b/docs/src/07_deployment_view.adoc @@ -56,9 +56,9 @@ Describe (usually in a combination of diagrams, tables, and text): For multiple environments or alternative deployments please copy and adapt this section of arc42 for all relevant environments. **** -image::Deployed-Infrastructure.png["Deployed Infrastructure"] - **** +[plantuml, infrastructure.png, png] +---- component User as "User" cloud "WIQ" { rectangle "Azure - Ubuntu - Docker"{ @@ -108,17 +108,7 @@ records -[#red]-> Records questions -[#red]-> Questions qg -[#red]-> Questions qg -[dotted]-> Wikidata -**** -This diagram shows the infrastructure of our application when deployed. - -*TBD* - -=== Infrastructure Level 2 +---- -[role="arc42help"] -**** -Here you can include the internal structure of (some) infrastructure elements from level 1. - -Please copy the structure from level 1 for each selected element. **** - +This diagram shows the infrastructure of our application when deployed. diff --git a/docs/src/08_concepts.adoc b/docs/src/08_concepts.adoc index edba9e7f..b37df899 100644 --- a/docs/src/08_concepts.adoc +++ b/docs/src/08_concepts.adoc @@ -58,13 +58,64 @@ See https://docs.arc42.org/section-8/[Concepts] in the arc42 documentation. === Domain concepts ==== Domain model -image::08-Domain-Model.png["model-diagram"] - +[plantuml, domain-model.png, png] +---- +rectangle "Domain model"{ + class User { + username : String + email : String + password : String +} + +class Game { + questions : List +} + +class Question { + question : String + answers : List + correctAnswer : Answer + language : String + number : int + questionType : QuestionType +} + +enum QuestionType { + POPULATION + CAPITAL + SIZE + LANGUAGE +} + +class Answer { + text : String + language : String +} + +class UserData { + answeredQuestion : Question + chosenAnswer : String +} + +class GameOptions { + language : String +} + +User "1" -[#red]-> "n" Game : plays +User "1" -[#red]-> "1" GameOptions : defines +GameOptions "1" -[#red]-> "1" Game : uses +Game "1" -[#red]-* "n" Question : has many +Question -[#red]-> QuestionType : is +Question "1" -[#red]-* "n" Answer : has many +Game "1" -[#red]-> "1" UserData : stores +User "1" -[#red]-> "1" UserData : stores +} +---- === User experience concepts ==== Consistency -Design elements should be consistent throuhgout the design so that the user does not get confused. +Design elements should be consistent throuhgout the design, so that the user does not get confused. ==== Progress indicators Provide the users with some sort of progress indicator within the quiz. This helps users understand their current position in the quiz. @@ -73,7 +124,7 @@ Provide the users with some sort of progress indicator within the quiz. This hel Provide immediate feedback to users after they answer each question, indicating whether their response was correct or incorrect. ==== Internationalization -Provide other language options other than english. +Provide language options other than english. === Security and Safety concepts @@ -82,7 +133,7 @@ Provide other language options other than english. Make sure to never store the user passwords in plain text, to secure the users data. ==== Data encryption -Utilize encryption techniques to secure data in any transmission between actors of owr application. +Utilize encryption techniques to secure data in any transmission between actors of our application. === Architecture and design patterns concepts @@ -90,21 +141,26 @@ Utilize encryption techniques to secure data in any transmission between actors ==== Microservices The microservices pattern combines design patterns to create multiple services that work interdependently to create a larger application. Because each application is small, it's easier to update them when needed. We will be using this pattern during development. + === Under-the-hood concepts -TBD -=== Developement concepts +==== Question and User Databases +To enhance consistency and reduce reliance on Wikidata, our project employs two distinct databases. The first database serves as a repository for questions generated via Wikidata's API, which are then utilized within the application. The second database stores various other datasets, including user information. -==== Testing -TBD -==== Deployment -TBD +=== Developement concepts + +==== Continous Integration +The developement will intent for the maximum possible code coverage, and to be deployed in an Azure Virtual Machine using Continous Integration. ==== Task branching -We should create 1 branch per task and merge them as soon as possible. +We should create 1 branch per issue and merge them as soon as possible. + +==== Error handling +In case of an exception/error, the system will pressent user-friendly messages informing of the error. This messages will only be delivered in the worst case, when all other attempts to resolve the issue have been exhausted. + === Operational concepts -TBD -__ +==== User history +The application will maintain a record of user game history, encompassing details such as game timestamps, earned points, questions posed, correct response and selected response.