|
|
|
| [Home](home) | [Escopo e Cronograma](escopo) | [Processo](processo) | [Design/Mockups](design_mockups) | [Configuração](configuracao) | [**Arquitetura**](arquitetura) | [Código](codigo) | [BD](banco_dados) | [Qualidade](qualidade) | [Utilização](utilizacao) |
|
|
|
|
| :----------: | :---------------------------: | :------------------: | :--------------: | :--------------------------: | :----------------------------: | :--------------: | :---------------: | :--------------------: | :----------------------: |
|
|
|
|
|
|
|
|
# Arquitetura do Sistema
|
|
|
|
|
|
|
|
## Descrição
|
|
|
|
|
|
|
|
Esta seção irá abordar a arquitetura selecionada para o Backend e Frontend, além dos dados relativos ao deploy.
|
|
|
|
|
|
|
|
## Sumário
|
|
|
|
|
|
|
|
- [Arquitetura do Sistema](#arquitetura-do-sistema)
|
|
|
|
- [Descrição](#descrição)
|
|
|
|
- [Sumário](#sumário)
|
|
|
|
- [Arquitetura Geral da Aplicação](#arquitetura-geral-da-aplicação)
|
|
|
|
- [Diagramas](#diagramas)
|
|
|
|
- [Diagrama de Deploy](#diagrama-de-deploy)
|
|
|
|
- [Diagrama de Componentes](#diagrama-de-componentes)
|
|
|
|
- [Diagrama de Implantação](#diagrama-de-implantação)
|
|
|
|
- [Backend](#backend)
|
|
|
|
- [Definições de Tecnologias](#back-end-def-tec)
|
|
|
|
- [Diagrama de Fluxo](#diagrama-de-fluxo)
|
|
|
|
- [Frontend](#frontend)
|
|
|
|
- [Definições de Tecnologias](#front-end-def-tec)
|
|
|
|
- [Módulos do Sistema](#front-end-mods-sis)
|
|
|
|
- [Diagramas de Componentes](#diagramas-de-componentes)
|
|
|
|
- [Diagrama do Sistema](#diagrama-do-sistema)
|
|
|
|
|
|
|
|
## Arquitetura Geral da Aplicação
|
|
|
|
|
|
|
|
TBD
|
|
|
|
|
|
|
|
## Diagramas
|
|
|
|
|
|
|
|
### Diagrama de Deploy
|
|
|
|
|
|
|
|
### Diagrama de Componentes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Diagrama de Implantação
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Backend
|
|
|
|
|
|
|
|
### Definições de Tecnologias
|
|
|
|
|
|
|
|
- Linguagem de Programação: TypeScript
|
|
|
|
- Runtime: Node v19
|
|
|
|
- Framework: [Nest.js V10](https://nestjs.com/)
|
|
|
|
|
|
|
|
Neste projeto, utilizamos 'Clean Architecture', pois tem como objetivo fornecer um sistema modular, escalável, independente de frameworks e tecnologias e fácil de testar e manter. Ao separar as responsabilidades em camadas com propósitos específicos, é possível garantir que cada camada possa ser alterada sem afetar as outras camadas do sistema, facilitando a evolução e manutenção do software ao longo do tempo.
|
|
|
|
|
|
|
|
### Diagrama de Fluxo
|
|
|
|
|
|
|
|
A estrutura do projeto é modularizada, onde há um injetor de dependência específico para cada rota, assim como a criação de toda estrutura, como criação de um novo repositório, novos usecases, domínios(entity), dtos, services, etc.
|
|
|
|
|
|
|
|
Responsabilidade das camadas:
|
|
|
|
|
|
|
|
Application: Aqui é o local onde é realizado a injeção de dependências, imports e declaração do Controller. É o entrypoint da nossa aplicação.
|
|
|
|
|
|
|
|
Core: É onde é realizado a regra de negócio(Como por exemplo: estudante pode participar de um evento se for de faculdade fulana) é nesta camada que vai está regra, transformação de dados, etc.
|
|
|
|
|
|
|
|
Infrastructure: É a camada responsável pela persistência de dados, ou seja de fazer a conexão com o banco de dados.
|
|
|
|
|
|
|
|
Resources: Local onde é salvo recursos que utilizaremos no projeto, podendo ser imagem, documentos, etc.
|
|
|
|
|
|
|
|
[Para mais informações](https://www.cedrotech.com/blog/arquitetura-limpa/#)
|
|
|
|
|
|
|
|
|