... | ... | @@ -25,11 +25,35 @@ Devem ser apresentados das seguintes formas: |
|
|
* Diagramas ou Sistemas
|
|
|
* Descrições ou Textos explicativos
|
|
|
|
|
|
## Rotas do backend
|
|
|
[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/15973252-f44b1278-8442-4898-8778-4e37501d7f38?action=collection%2Ffork&collection-url=entityId%3D15973252-f44b1278-8442-4898-8778-4e37501d7f38%26entityType%3Dcollection%26workspaceId%3D23e543fe-3382-4e89-af71-2692db9c051a#?env%5BGarbus%5D=W3sia2V5Ijoiand0VG9rZW4iLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoibG9naW4iLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoicGFzc3dvcmQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9XQ==)
|
|
|
|
|
|
|
|
|
# Arquitetura
|
|
|
O projeto está dividido em 2 partes:
|
|
|
- **Frontend**: É uma Progressive Web Application, ou seja, uma aplicação web que pode ser instalada, utilizando a tecnologia *Service Worker*, presente nos principais navegadores web do mercado. Desenvolvido em React.js com linguagem Typescript.
|
|
|
- **Backend**: É uma RESTful API construída utilizando Spring, que é um dos frameworks Java mais populares do mercado.
|
|
|
|
|
|
Também estão sendo utilizadas as seguintes tecnologias como partes integrantes do projeto:
|
|
|
- **PostgreSQL**: Banco de dados relacional *open source* com mais de 30 anos de desenvolvimento. Um dos mais utilizados no mundo. Utilizado no projeto como persistência de dados.
|
|
|
- **Hashicorp Vault**: Uma ferramenta para armazenar senhas e outros segredos de forma segura, com forte criptografia e controle de acesso, e acessível de várias formas (REST API, linha de comando, bibliotecas para várias linguagens de programação). Utilizado no projeto para armazenar senhas e configurações.
|
|
|
- **Firebase**: Uma plataforma do Google utilizada para desenvolvimento de aplicativos móveis e web. Possui vários recursos prontos para integração, como banco de dados, autenticação, *analytics* e notificações push. Utilizado no projeto para enviar e exibir notificações push.
|
|
|
|
|
|
## Diagrama de componentes
|
|
|
A visão geral dos componentes do projeto pode ser visualizada na imagem abaixo.
|
|
|
|
|
|
![](https://tools.ages.pucrs.br/garbus/garbus-wiki/raw/master/Images/component_diagram.png)
|
|
|
|
|
|
## Diagrama de implantação
|
|
|
A implantação do projeto é realizada utilizando containers Docker. O repositório [garbus-orchestration](https://tools.ages.pucrs.br/garbus/garbus-orchestration) contém a configuração do *docker-compose*, responsável pela implantação, que hoje é feita em uma única máquina. Para distribuir em vários hosts, algumas alterações seriam necessárias (provavelmente mudar para o *Docker Swarm* ou mesmo *K8s*).
|
|
|
|
|
|
Os componentes Frontend, Backend e Vault são acessíveis apenas pelo Nginx. Endereços:
|
|
|
- Frontend: https://ages-garbus.duckdns.org
|
|
|
- Backend: https://ages-garbus.duckdns.org/api/garbus/<rotas\>
|
|
|
- Vault: https://ages-garbus-vault.duckdns.org
|
|
|
|
|
|
![](http://tools.ages.pucrs.br/garbus/garbus-wiki/raw/master/Images/deploy_diagram.png)
|
|
|
|
|
|
## Rotas do backend
|
|
|
As rotas do backend estão acessíveis no Postman e documentadas utilizando Swagger.
|
|
|
|
|
|
[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/15973252-f44b1278-8442-4898-8778-4e37501d7f38?action=collection%2Ffork&collection-url=entityId%3D15973252-f44b1278-8442-4898-8778-4e37501d7f38%26entityType%3Dcollection%26workspaceId%3D23e543fe-3382-4e89-af71-2692db9c051a#?env%5BGarbus%5D=W3sia2V5Ijoiand0VG9rZW4iLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoibG9naW4iLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoicGFzc3dvcmQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9XQ==)
|
|
|
<a href="https://ages-garbus.duckdns.org/api/garbus/swagger-ui.html"><img src="https://static1.smartbear.co/swagger/media/assets/images/swagger_logo.svg" alt="Swagger" width="123" /></a> |