From 013d04536ab86b8ab1ef8c76f43110a0ac7ca1d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Tru=C3=A9bano?= Date: Sat, 9 Mar 2024 17:52:27 +0100 Subject: [PATCH] Adding new technologies to documentation section 4 and adding azure to section 7 --- docs/images/10-Quality-Tree-EN.png | Bin 32001 -> 0 bytes docs/src/04_solution_strategy.adoc | 2 +- docs/src/07_deployment_view.adoc | 39 +++++++++++++++++------------ 3 files changed, 24 insertions(+), 17 deletions(-) delete mode 100644 docs/images/10-Quality-Tree-EN.png diff --git a/docs/images/10-Quality-Tree-EN.png b/docs/images/10-Quality-Tree-EN.png deleted file mode 100644 index dbae1bf1b111345eab9bbe7ec4ea924bd99f88b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32001 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 z 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 Jlc7`ee*xr)m0kb< diff --git a/docs/src/04_solution_strategy.adoc b/docs/src/04_solution_strategy.adoc index e0b613c..e1d6478 100644 --- a/docs/src/04_solution_strategy.adoc +++ b/docs/src/04_solution_strategy.adoc @@ -33,13 +33,13 @@ See https://docs.arc42.org/section-4/[Solution Strategy] in the arc42 documentat === Technologies * *React*: JavaScript library for web and native user interfaces. It allows developers to create interactive web applications by breaking down the UI into reusable components. React uses a declarative approach to efficiently update and render components, resulting in faster and more maintainable code. It's widely adopted in the industry due to its simplicity, performance, and robustness. -* *Svelte*: modern JavaScript framework that compiles code at build time for efficient updates to the DOM. It emphasizes smaller bundle sizes and better performance, offering a simpler approach to building dynamic web applications compared to traditional frameworks like React or Vue. * *Node.js*: JavaScript runtime that enables running JavaScript code outside of web browsers. It's renowned for its event-driven architecture and extensive collection of packages, making it ideal for building scalable server-side applications. + *Express.js*: Express.js, often simply called Express, is a minimalist web application framework for Node.js. It simplifies the process of building web applications by providing a robust set of features, including middleware support, routing, and templating engines. Express is known for its flexibility, simplicity, and performance, making it a popular choice for developing web applications and APIs in Node.js. * *.NET*: versatile developer platform for creating web, mobile, desktop, and cloud applications. It supports multiple programming languages and provides a rich set of libraries and tools for building software solutions. With built-in support for creating APIs and consuming web services, .NET makes it simple to develop and integrate with backend systems and services. * *Wikidata*: Wikidata provides a REST API for retrieving information related to any topic. It helps us to dynamically generate questions for our game using it from any programming language. * *MongoDB*: popular NoSQL database known for its flexibility and scalability. It stores data in flexible JSON-like documents and is widely used in modern web development for its simplicity and ability to handle large volumes of data. * *Cucumber*: Testing tool that supports Behavior Driven Development (BDD) and allows us also to comply testability quality attribute. +* *SonarCloud*: Cloud-based service provided by SonarSource, which offers continuous code quality analysis and automated code reviews for software development projects. It helps developers identify and fix bugs, security vulnerabilities, and code smells in their codebase to improve overall software quality. * *Arc42*: framework (template) used for documenting and communicating software architectures. It provides a template for describing the architecture of a software system, covering aspects such as stakeholders, requirements, architecture decisions, components, interfaces, and quality attributes. arc42 helps teams create consistent and comprehensible architecture documentation, enabling better communication, understanding, and maintenance of software systems throughout their lifecycle. * *npm*: default package manager for Node.js, providing a command-line interface to install, manage, and publish JavaScript packages. With over a million packages available in its registry, npm simplifies adding functionality to Node.js projects by handling dependencies and providing tools for versioning and publishing packages. * *Docker*: platform that will be used for deploying our services inside containers. Containers are lightweight, portable, and self-sufficient units that contain everything needed to run an application, including the code, runtime, system tools, libraries, and settings. Docker enables developers to package their applications along with all dependencies into containers, ensuring consistency across different environments, such as development, testing, and production. diff --git a/docs/src/07_deployment_view.adoc b/docs/src/07_deployment_view.adoc index 66a39e3..2673084 100644 --- a/docs/src/07_deployment_view.adoc +++ b/docs/src/07_deployment_view.adoc @@ -98,28 +98,30 @@ General view of system's infrastructure [plantuml, target=deployment-diagram, format=png] .... actor client as "Client" -frame UbuntuServer { - frame Docker { +frame Azure { + frame UbuntuServer { + frame Docker { - frame WebAPP { - node React - } + frame WebAPP { + node React + } - frame NodeJSGateway { - node Authentication + frame NodeJSGateway { + node Authentication - node Users - } + node Users + } - database MongoDB { - node UsersDatabase + database MongoDB { + node UsersDatabase - node ResultsDatabase - } + node ResultsDatabase + } - frame .NET { - node RestAPI + frame .NET { + node RestAPI + } } } } @@ -130,6 +132,10 @@ frame GitHub{ node dockerCompose } + frame wiq_en3a{ + node project + } + } .NET -- ResultsDatabase : MongoDB (port 27017) @@ -138,7 +144,8 @@ WebAPP -- NodeJSGateway : (port 8000:8002) WebAPP -- .NET : .NET (port TBD) client -- WebAPP : Web Browser (port 3000) -Docker -- GitHubActions : on release +GitHubActions -- UbuntuServer : on release +Docker -- wiq_en3a ....