Home | Escopo e Cronograma | Processo | Design/Mockups | Configuração | Arquitetura | Código | BD | Dívidas Técnicas |
---|
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 Geral da Aplicação
TBD
Diagramas
Diagrama de Deploy
Diagrama de Componentes
Diagrama de Implantação
Orçamento AWS
Backend
Definições de Tecnologias
- Linguagem de Programação: TypeScript
- Runtime: Node v19
- Framework: Nest.js V10
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.
Frontend
Definições de Tecnologias
Módulos do Sistema
- assets: Diretório contendo imagens de acesso livre na aplicação
- components: Contém os componentes visuais utilizados em diferentes partes da aplicação. Os componentes são em sua maioria genéricos e podem ser reutilizados.
- contexts: Contém os contextos da aplicação, que permitem o acesso a estados de diferentes componentes que estejam "envelopados" nos contextos.
- hooks: Contém "hooks" customizados da aplicação.
- routes: Contém a lógica de roteamento para as diferentes telas do aplicativo.
- screens: Contém as telas desenvolvidas.
- services: Contém os serviços que consomem os recursos da API.
- shared: Contém as definições de interfaces de acesso comum do sistema.