How it works

Architectural drivers

The following is a description of the quality attributes with their respective order of priority and the reason why they were chosen. It should be clarified that the architectural drivers are selected to satisfy and promote compliance with the scope, business context, constraints and specifications of the system.

Technological Stack

Technical architecture

The technical architecture is composed of:

The entire VariaMos infrastructure is deployed in Azure, app service resources such as web server and azure data base for postgresql are used for information persistence.

Clean Architecture

Each component is built with clean architecture principles, incorporating the following structure:

Continuous integration and deployment strategy

The integration and continuous deployment strategy is based on the github tool, action workflows are used to synchronize with dockerhub and Azure to immediately execute the deployment when committing to the master branch.

Data base model

The data model is composed of a table for the languages, a table for the external functions, a set of tables for the RBAC model management and a set of tables for the management of the user projects.

Architecture extension points

External function

  • Database: VariaMos has a database that stores the structure of the languages that are incorporated by each member of the community, this structure has an autonomous interpretation from the frontend that allows extensibility in a fast and agile way.
    microservices
  • External functions: Each language has the ability to establish standard communications with any API, created in any language, as long as it is a REST type communication through http/s. You can create external functions here.

Functional features

Transactional workflow

The following is an illustration of the transactional flow of some of the VariaMos functionalities.

Definition of the project tree

In VariaMos the creation of several product lines is enabled, which in turn includes domain and application engineering, within each application engineering the creation of N applications is allowed and in turn, within each application N adaptations.

Authorization & Authentication

VariaMos uses the Google Auth service to authenticate and authorize users inside the platform, after Google authenticates a new user, this user gets registered into the VariaMos database and their user permissions are sent to the browser, these permissions are stored into the session storage for future use.

Once the application has all the permissions together with the user information, VariaMos can use it to validate which views certain users have access to.

Sign Up API

VerbPOST
URL/signup/
Payload{ email: 'email@email.com', name: 'John Smith' }
Response{ user: { id: 1, name: 'John Smith' }, permissions: [ { id: 1, name: 'Settings' } ] }

Local Storage Management

ItemDescriptionContent
currentUserProfileThis item contains all the user information gathered from the Google authentication{"googleId":"113994333450415707380","imageUrl":"https://lh3.googleusercontent.com/a/AEdFTp4GAuXNcCRAOZ_3vJN4MECdgxpgb0WSW4jr2PDg_A=s96-c","email":"john.smith@starmedia.com","name":"John Smith","givenName":"John","familyName":"Smith"}
userPermissionsThis item will store the user information together with the user permissions from the Database{“userId”: 3, “permission”: [{"id": 1,"name": "Create languages"},{"id": 2,"name": "Aprobe languages"},{"id": 3,"name": "Create product lines"}]}