Skip to content

Commit

Permalink
Merge pull request #201 from Arquisoft/develop
Browse files Browse the repository at this point in the history
Final delivery version to master
  • Loading branch information
UO282365 authored May 2, 2023
2 parents 26c9ae6 + 7c4e9f6 commit c9b3c93
Show file tree
Hide file tree
Showing 160 changed files with 30,609 additions and 37,300 deletions.
26 changes: 14 additions & 12 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,19 @@ on:
branches: ['**']

jobs:
e2e-tests:
needs: [unit-test-webapp]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- run: npm --prefix webapp install
- run: npm --prefix webapp run build
env:
CI: ""
- run: npm --prefix webapp run test:e2e
unit-test-webapp:
runs-on: ubuntu-latest
defaults:
Expand All @@ -26,15 +39,4 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
e2e-tests:
needs: [unit-test-webapp]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- run: npm --prefix webapp install
- run: npm --prefix restapi install
- run: npm --prefix webapp run build
- run: npm --prefix webapp run test:e2e

37 changes: 3 additions & 34 deletions .github/workflows/lomap_en2a.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,40 +30,9 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 18

- run: npm --prefix webapp install
- run: npm --prefix webapp run build
- run: npm --prefix webapp run test:e2e
docker-push-webapp:
name: Push webapp Docker Image to GitHub Packages
runs-on: ubuntu-latest
needs: [e2e-tests]
steps:
- uses: actions/checkout@v3
- name: Publish to Registry
uses: elgohr/Publish-Docker-Github-Action@v5
env:
API_URI: http://${{ secrets.DEPLOY_HOST }}:5000/api
with:
name: arquisoft/lomap_en2a/webapp
username: ${{ github.actor }}
password: ${{ secrets.DOCKER_PUSH_TOKEN }}
registry: ghcr.io
workdir: webapp
buildargs: API_URI
# deploy:
# name: Deploy over SSH
# runs-on: ubuntu-latest
# needs: [docker-push-restapi,docker-push-webapp]
# steps:
# - name: Deploy over SSH
# uses: fifsky/ssh-action@master
# with:
# host: ${{ secrets.DEPLOY_HOST }}
# user: ${{ secrets.DEPLOY_USER }}
# key: ${{ secrets.DEPLOY_KEY }}
# command: |
# wget https://raw.githubusercontent.com/arquisoft/lomap_en2a/master/docker-compose-deploy.yml -O docker-compose.yml
# docker-compose stop
# docker-compose rm -f
# docker-compose pull
# docker-compose up -d
CI: ""
- run: npm --prefix webapp run test:e2e
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,5 @@ yarn-error.log*
#documentation build does not go into master
docs/build

.idea
.idea
/webapp/env.local
65 changes: 29 additions & 36 deletions docs/01_introduction_and_goals.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -14,35 +14,28 @@ Our goal is to develop an application that fullfills the requirements and good q


=== Requirements Overview
The application shows a map of a city or place. Each user is able to modify it's map to customize and personalized. The users can personalize it's maps by adding
markers, which can define bars, restaurants, sights, or points of interests from the city. This markers are stored, so that each user, by login in, can access to his personal map.

This storage will be handled according to the SOLID principles.

It's also possible to personalize a map of every city, since this app is not limited by a region or country, and can be accessed from anywhere.

The user requirements are actions that they can do in the application.

.User requirements. The user can:
* add different categories for each location.
* see the locations in a map in form of markers.
* interact with the locations adding photos, reviews or comments.
* manage a list of friends.
* manage the information that is shared with his friends.
* create personalized routes.(optional)
* compare specific categories. (optional)

.System requirements. The system must:
* store the information about each user's places in his Solid pod, not centralized.
* allow users to see their friends' markers.
* allow map filtering by categories.
* allow places to create their own pods.(optional)
* be able to create newsfeed from places.(optional)
* add some game features to engage people for discovering new places.(optional)
* allow the creation of maps between groups of users.(optional)
* be able to create place recomendations or check information about them.(optional)
* allow different roles for the users.(optional)
* allow business owners to create opportunities.(optional)
LoMap is a desktop application which allows users to have a customized map about places and local businesses in their city, although it can be scalable
to any place in the world. These locations can have images, reviews, scores... and can be categorized into shops, bars or museums among others.

All information is stored in a pod under the full control of the user, as LoMap is developed following the guidelines of the Solid Project. However, this is not
an impediment for the users to share their places with friends, since LoMap implements the friend system of Solid and lets the user decide which information is going to be
shared and which is going to be private.

==== Functional requirements
.The user will be able to:
* Manage their locations: add, delete and edit.
* Add different categories for each location.
* See the locations in the map in form of markers.
* Interact with the locations adding photos, reviews or ratings.
* Manage a list of friends.
* Manage the information that is shared with his friends.
* Keep track of their progress in the application in a gamified way.
* Filter locations based on categories and friends.

.The system will:
* Store the information about each user's places in their Solid pods, not centralized.
* Allow users to see their own and their friends' markers.
* Offer the user an interactive guide to provide guidance and training on the app functionalities.


=== Quality Goals
Expand All @@ -52,17 +45,17 @@ The user requirements are actions that they can do in the application.
|===
| Goal | Description

| Security | Each user should access to it's pod and it can not be accessed by other user. User can modify their access data.
| Security | A pod can only be accessed by its legitimate owner. User can modify their access data and manage which information is visible to other users.

| Performance | The application should be able to give reasonable response times when users are interacting with it.
| Performance | The application is able to give reasonable response times when users are interacting with it.

| Availability | The personal data from the pods can be accessed at any time.

| Usability | The application should be easy to use. This can be achieved by using different technices such as familiarity, learnability, etc.
| Usability | The application is easy to use.

| Portability | The application must work regarding the device, since it will be developed as a web application.
| Portability | The application works regarding the device, since it is developed as a web application.

| Testability | There must be tests for the application in order to check it's correct behavior.
| Testability | Tests are developed for the application in order to check it's correct behavior.

|===

Expand All @@ -72,8 +65,8 @@ The user requirements are actions that they can do in the application.
|===
|Role/Name|Description|Expectations
| Council of Brussels | The sponsor of the application | An application that allows users to have a better experience while visiting Brussels.
| HappySw | The company in charge of the application | A good application that fullfills the requirements expected by the sponsor.
| HappySw | The company in charge of the application development | A good application that fullfills the requirements expected by the sponsor.
| Developers | People that are implementing and mantaining the app | A good documentation and well commented code, avoiding repetitions and with a good use of patterns, in order to be easy to modify or extend.
| Professors | In charge of the subject. | An application fullfilling the expectations, that can be qualified. They can also give feedback and help to the developers.
| Professors | In charge of the subject | An application fullfilling the expectations, that can be qualified. They can also give feedback and help to the developers.
| Users | Interact with the application | A good, easy to use application, that responds well to their inputs and adds value to them, while keeping their data secure.
|===
18 changes: 10 additions & 8 deletions docs/02_architecture_constraints.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
[[section-architecture-constraints]]
== Architecture Constraints
When designing the LoMap application, there are several constraints that must be taken into consideration. These constraints will have a significant impact on the overall design of the application and the architectural decisions that are made. The constraints include privacy, user experience, deployment, security,... These constraints must be considered in order to ensure that the final product meets the needs and expectations of the users and stakeholders. The following table summarizes these constraints and provides a brief explanation for each.
When designing the LoMap application, there are several constraints that must be taken into consideration, as they will have a significant
impact on the overall design of the application and the architectural decisions.
These constraints must be considered in order to ensure that the final product meets the needs and expectations of the users and stakeholders.
The following table summarizes these constraints and provides a brief explanation for each one.

[options="header", cols="1,1"]
|===
Expand All @@ -20,20 +23,19 @@ When designing the LoMap application, there are several constraints that must be
|===

=== Recommended technologies to take into account
For the development of this application, some technologies have been proposed to us in order to ease the implementation of the dessired application. These are not considered constraints since they are not forced to us, but given the strong recommendation we considered it should be taken into account and presented in this section. In the following table, we can see the set of technologies proposed.
There some technologies mentioned to provide readers with a clear understanding of this application and how it works.
These are not considered constraints since they were not imposed, but given the strong impact they have, the team considered that they should be presented in this section.

[options="header", cols="1,1"]
|===
| Technology | Explanation

| TypeScript | It is a really versatile programming language that takes the best out of JavaScript and adds Type definition on top of it. Making it much more understandable and consistent.
| Google Maps API | Collection of APIs that allows developers to integrate Google Maps into their applications. Also provides developers with access to a range of features and functionality related to maps and location-based services.

| NodeJS | Node.js is a JavaScript runtime environment that allows developers to run JavaScript code outside of a web browser. This allows to use TypeScript language from the server side.
| NodeJS | JavaScript runtime environment that allows developers to run JavaScript code outside of a web browser. This allows to use TypeScript language from the server side.

| React | It is a JavaScript framework that allows the creation of web application UI in an easy way.
| React | JavaScript library that allows the creation of web application UI in an easy way. The user interface of our application was built using react componentes and libraries.

| Inrupt | SOLID pod provider. Also offers a set of libraries to ease the use and management of pods.

| Chakra UI | Modular component library for React which decreases the effort on creating HTML components.
| Inrupt | Platform (and SOLID pod provider) that allows a secure and decentralized way to store and share data. Also offers a set of libraries to ease the use and management of pods.

|===
21 changes: 9 additions & 12 deletions docs/03_system_scope_and_context.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,13 @@ The title of the table is the name of your system, the three columns contain the
****

In our business context, the user will input data into the application, which communicates with the user's SOLID pod to retrieve and add data. All this information among with the use of the Google Maps API, will be processed and a processed output will be recieved by the user. +
The pod will store the user's personal data, and the locations they mark on the map. +
The Google Maps API will provide our application maps, and more functionality like marking places.
In our business context, the user will input data into the application, which communicates with the user's SOLID pod to retrieve and add data.
This data, along with the use of the Google Maps API, will be processed and an output will be received by the user. +
The pod will store the user's personal data, a list of friends, and the locations they add to the application. +
The Google Maps API is a key element of the application, as it will provide our application with maps and more functionality.

image:03-Business-context-diagram.png[Business context diagram]

The LoMap box is a black box, inside are included all things related to the application itself, like the database.

=== Technical Context

[role="arc42help"]
Expand All @@ -69,11 +68,9 @@ together with a mapping table showing the relationships between channels and inp
|===
| Technical Interfaces | Description
| SOLID
| A specification that lets people store their data securely in decentralized data stores called _pods_. These _pods_ are fully under its owner's (the user) control. To use SOLID, a _pod provider_ and a "web ID" are needed. Pods are structures that store the user's data, and the ID identifies the user and allows them to access their pods, and also connect with other SOLID users.
| TypeScript
| A free and open source, developed and mantained by Microsoft. It is the programming language we will use to develop the application. It is derived from JavaScript and implements additional syntax and elements that makes it more complete and in general better than JS. It adds optional static typing and error detection is much easier. As it is a superset of JavaScript, existing JavaScript programs are also valid TypeScript programs.
| ReactJS
| A JavaScript open source library that will make it easier to create user interfaces. It shines in applications whose data is always changing. React is the View in the context of the MVC (Model-View-Controller) pattern.
| Specification that lets people store their data securely in decentralized data stores called _pods_. These _pods_ are fully under its owner's (the user) control. To use SOLID, a _pod provider_ and a "web ID" are needed. Pods are structures that store the user's data, and the ID identifies the user and allows them to access their pods, and also connect with other SOLID users.
| Docker
| A very useful tool that makes developing easier. It is used to automate the deployment of applications in lightweight _containers_ so that applications can work efficiently in different environments. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels.
|===
| Platform used to automate the deployment of applications in lightweight _containers_ so that applications can work efficiently in different environments. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels.
| ReactJS
| JavaScript open source library that will make it easier to create user interfaces. It shines in applications whose data is always changing.
|===
Loading

0 comments on commit c9b3c93

Please sign in to comment.