... | @@ -27,16 +27,18 @@ Esta seção é dedicada a apresentar a arquitetura definida para o projeto. <br |
... | @@ -27,16 +27,18 @@ Esta seção é dedicada a apresentar a arquitetura definida para o projeto. <br |
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
Ambos os projetos seguiram os princípios de *Clean Architecture*[1][2], e cada repositório possui uma arquitetura em camada que condiz com a sua finalidade. Ambos são descritos melhor nos tópicos abaixo.
|
|
|
|
|
|
## ⚙ Backend
|
|
## ⚙ Backend
|
|
|
|
|
|
Com base nos princípios de *Clean Architecture*[1], estruturamos um projeto *Backend* utilizando a seguinte Stack:
|
|
Stacks definidas:
|
|
|
|
|
|

|
|
[](https://www.typescriptlang.org/)
|
|

|
|
[](https://expressjs.com/pt-br/)
|
|

|
|
[](https://www.prisma.io/)
|
|

|
|
[](https://swagger.io/)
|
|
|
|
|
|
Do qual possui uma arquitetura em camadas, das quais são caracterizadas pelos seguintes ficheiros:
|
|
As camadas do sistema estão descritas abaixo.
|
|
|
|
|
|
### Controllers
|
|
### Controllers
|
|
|
|
|
... | @@ -59,16 +61,16 @@ Link para o Repositório: [Backend](https://tools.ages.pucrs.br/planline/backend |
... | @@ -59,16 +61,16 @@ Link para o Repositório: [Backend](https://tools.ages.pucrs.br/planline/backend |
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
## 📱 Frontend Mobile
|
|
## 📱 Mobile
|
|
|
|
|
|
Com base nos princípios de *Clean Architecture*[1], estruturamos um projeto *Mobile* utilizando a seguinte Stack:
|
|
Stacks definidas:
|
|
|
|
|
|

|
|
[](https://www.typescriptlang.org/)
|
|

|
|
[](https://expo.dev/)
|
|

|
|
[](https://reactnative.dev/)
|
|

|
|
[](https://tailwindcss.com/)
|
|
|
|
|
|
Do qual possui uma arquitetura em camadas, das quais são caracterizadas pelos seguintes diretórios:
|
|
As camadas do sistema estão descritas abaixo.
|
|
|
|
|
|
### Components
|
|
### Components
|
|
|
|
|
... | @@ -91,16 +93,16 @@ Link para o Repositório: [Mobile](https://tools.ages.pucrs.br/planline/mobile) |
... | @@ -91,16 +93,16 @@ Link para o Repositório: [Mobile](https://tools.ages.pucrs.br/planline/mobile) |
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
## 💻 Frontend Web
|
|
## 💻 Web
|
|
|
|
|
|
Com base nos princípios de *Clean Architecture*[1], estruturamos um projeto *Web* utilizando a seguinte Stack:
|
|
Stacks definidas:
|
|
|
|
|
|

|
|
[](https://www.typescriptlang.org/)
|
|

|
|
[](https://vitejs.dev/)
|
|

|
|
[](https://react.dev/)
|
|

|
|
[](https://tailwindcss.com/)
|
|
|
|
|
|
Do qual possui uma arquitetura em camadas, das quais são caracterizadas pelas seguintes pastas:
|
|
As camadas do sistema estão descritas abaixo.
|
|
|
|
|
|
### Components
|
|
### Components
|
|
|
|
|
... | @@ -139,9 +141,9 @@ O diagrama a seguir apresenta a arquitetura em alto nível e o processo de deplo |
... | @@ -139,9 +141,9 @@ O diagrama a seguir apresenta a arquitetura em alto nível e o processo de deplo |
|
|
|
|
|

|
|

|
|
|
|
|
|
Sobre duas instâncias da AWS, os códigos dos repositórios *Frontend Web* e *Backend* serão carregados pelo *Gitlab Runner* a cada nova contruibuição, e serão armazenados dentro dos respectivos *containers Docker*.
|
|
A cada nova versão gerada na branch *main* dos repositórios *Web* e *Backend*, os respectivos códigos serão envolvidos em um *container Docker* e movidos ao *Gitlab Runner* do qual realiza a etapa de *build* e direciona a aplicação executável para cada instância da AWS.
|
|
|
|
|
|
O repositório do *Frontend Mobile* não necessita de um servidor por este utilizar o framework do *EXPO GO*, que é carregado diretamente no smartphone de cada usuário quando o código é executado. O mesmo é apresentado no *Firebase*, sendo um banco de dados provisionado na *Google Cloud*.
|
|
O repositório do *Mobile* não necessita estar em um servidor, por conta do sistema poder ser executado em um ou vários dispositivos mobiles. E devido ao framework do *Expo*, é possível executar o *App* em diversos sistemas mobiles, como iOS, Android, e também permite portá-lo em uma versão *Web*.
|
|
|
|
|
|
Os principais módulos do sistema vão dispor de conexões distintas entre sí, das quais sofrerão alterações mediante o andamento dos projetos.
|
|
Os principais módulos do sistema vão dispor de conexões distintas entre sí, das quais sofrerão alterações mediante o andamento dos projetos.
|
|
|
|
|
... | @@ -149,7 +151,7 @@ Os principais módulos do sistema vão dispor de conexões distintas entre sí, |
... | @@ -149,7 +151,7 @@ Os principais módulos do sistema vão dispor de conexões distintas entre sí, |
|
|
|
|
|
### 💸 Orçamento AWS
|
|
### 💸 Orçamento AWS
|
|
|
|
|
|
Essa seção apresenta o orçamento da infraestrutura na AWS. O orçamento foi feito utilizando a ferramenta [AWS Pricing Calculator](https://calculator.aws/#/) e busca estimar o custo financeiro para manter a infraestrutura do projeto pelo pelo período de 1 semestre, sendo este a duração do projeto e da disciplina da AGES.
|
|
Essa sessão apresenta o orçamento da infraestrutura na AWS. O orçamento foi feito utilizando a ferramenta [AWS Pricing Calculator](https://calculator.aws/#/) e busca estimar o custo financeiro para manter a infraestrutura do projeto pelo período de 1 semestre, sendo este a duração do projeto e da disciplina da AGES.
|
|
|
|
|
|
O PDF gerado através do AWS Pricing Calculator com o orçamento para a infraestrutura do projeto pode ser encontrado nesse link: [My_Estimate_-_AWS_Pricing_Calculator.pdf](uploads/618b67190e19034aeb91203cbedbb958/My_Estimate_-_AWS_Pricing_Calculator.pdf)
|
|
O PDF gerado através do AWS Pricing Calculator com o orçamento para a infraestrutura do projeto pode ser encontrado nesse link: [My_Estimate_-_AWS_Pricing_Calculator.pdf](uploads/618b67190e19034aeb91203cbedbb958/My_Estimate_-_AWS_Pricing_Calculator.pdf)
|
|
|
|
|
... | @@ -167,4 +169,5 @@ A seguir serão apresentados os componentes (serviços da AWS) que irão compor |
... | @@ -167,4 +169,5 @@ A seguir serão apresentados os componentes (serviços da AWS) que irão compor |
|
|
|
|
|
## Referências
|
|
## Referências
|
|
|
|
|
|
[1] C. Martin, Robert. Clean Architecture: A Craftsman's Guide to Software Structure and Design. Pearson, 2017 |
|
[1] MARTIN, Robert. Clean Architecture: A Craftsman's Guide to Software Structure and Design. Pearson, 2017. P. 161-404.
|
|
|
|
[2] MARTIN, Robert. The Clean Architecture. 2012. Disponível em: <https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html> Acesso em: 24 nov. 2023. |