Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • A ALFA Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • ALFA
  • ALFA Wiki
  • Wiki
  • Arquitetura

Arquitetura · Changes

Page history
Update Arquitetura authored Nov 08, 2021 by Marcelo Henrique De Souza's avatar Marcelo Henrique De Souza
Hide whitespace changes
Inline Side-by-side
Arquitetura.md 0 → 100644
View page @ 5c06d0f6
| [Home](home) | [Escopo e Cronograma](escopo) | [Processo](processo) | [Design/Mockups](design_mockups) | [Configuração](configuracao) | [**Arquitetura**](modelo_arquitetural) | [Código](codigo) | [BD](banco_dados) | [Qualidade](qualidade) | [Utilização](utilizacao) | [Padrão Merge Request](Padrão Merge Request)
| :--------------: | :---------------------------: | :------------------: | :--------------: | :--------------------------: | :------------------------: | :--------------: | :---------------: | :--------------------: | :----------------------: | :-------------------------------------------:|
# Tecnologias
![](http://tools.ages.pucrs.br/alfa/alfa-wiki/raw/master/images/technology.png)
## Comunicação entre as tecnologias utilizadas
![](http://tools.ages.pucrs.br/alfa/alfa-wiki/raw/master/images/diagrama.png)
## Fluxograma de chamadas da aplicação
![](http://tools.ages.pucrs.br/alfa/alfa-wiki/raw/master/images/diagramafluxo.png)
### Vue.js
Vue.js é uma biblioteca para construir interfaces web interativas. O objetivo do Vue.js é fornecer os benefícios da vinculação de dados reativa e componentes de visualização combináveis ​​com uma API que seja o mais simples possível. No contexto do projeto _Alpha_ foi escolhida como a tecnlogia a ser usada para o desenvolvimento do frontend.
### Spring Boot
Spring Boot é uma microestrutura de código aberto mantida por uma empresa chamada Pivotal. Ele fornece aos desenvolvedores Java uma plataforma para começar a usar um aplicativo Spring de nível de produção configurável automaticamente. Com ele, os desenvolvedores podem começar rapidamente sem perder tempo na preparação e configuração de seu aplicativo Spring. No contexto do projeto _Alpha_ foi escolhido como a tecnologia a ser usada para o desenvolvimento do backend.
### Firebase Authentication
O objetivo do Firebase Authentication é facilitar o desenvolvimento de um sistema de autenticação seguro, além de melhorar a experiência de login e integração para os usuários finais. Ele oferece uma solução de identidade completa, compatível com contas de e-mail/senha, autenticação por telefone, login do Google, Twitter, Facebook, GitHub e outros. No contexto do projeto _Alpha_ foi escolhido como o provider de autenticação e autorização dos usuários cadastrados acessaram a aplicação.
### Amazon Polly
O Amazon Polly é um serviço que transforma texto em falas realistas, permitindo que você crie aplicativos que falam e desenvolva categorias totalmente inéditas de produtos compatíveis com fala. O serviço de conversão de texto em fala (TTS) do Polly usa tecnologias avançadas de aprendizagem profunda para sintetizar falas humanas com aparência natural. No contexto do projeto _Alpha_ foi escolhido como uma das tecnologias a serem usadas para o modo assistente, afim de auxiliar o usuário com baixa alfabetização entender o que lhe esta sendo pedido no desenvolvimento das suas tarefas na aplicação, associando o texto com o som da palavra.
### Amazon Transcribe
O Amazon Transcribe permite que os desenvolvedores adicionem facilmente recursos de conversão de fala em texto às suas aplicações. Dados de áudio são praticamente impossíveis de serem pesquisados e analisados por computadores. No contexto do projeto _Alpha_ foi escolhido como uma das tecnologias a serem usadas para o modo assistente, afim de transcrever um arquivo de áudio em texto, tornando possível assim que o usuário conheça como é escrita uma palavra a partir da sua pronuncia.
### Amazon RDS for PostgreSQL
O PostgreSQL tornou-se o banco de dados relacional de código aberto preferencial de muitos desenvolvedores empresariais e startups, dando suporte aos principais aplicativos de negócios e móveis. O Amazon RDS facilita a configuração, a operação e a escalabilidade de implantações de PostgreSQL na nuvem. No contexto do projeto _Alpha_ é a tecnologia escolhida para o banco de dados da aplicação.
### Amazon S3
O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos que oferece escalabilidade, disponibilidade de dados, segurança e performance. No contexto do projeto _Alpha_, é necessário devido a integração junto ao web service _transcribe_ da amazon para que seja armazenado os arquivos de áudio, sendo possível assim analisar o aúdio do arquivo e fazer com que o serviço _transcribe_ retorne um arquivo de texto da fala transcrita.
# Estrutura de Arquivos do Backend
```
alpha-backend/
└── src/
├── main/
│ ├── java/
│ │ └── br.com.alpha.api/
│ │ ├── config/
│ │ │ └── ExampleConfig.java
│ │ ├── domain/
│ │ │ └── Example.java
│ │ ├── dto/
│ │ │ ├── request/
│ │ │ │ └── ExampleRequest.java
│ │ │ └── response/
│ │ │ └── ExampleResponse.java
│ │ ├── repository/
│ │ │ ├── ExampleRepository.java
│ │ │ └──
│ │ ├── service/
│ │ │ └── ExampleService.java
│ │ ├── utils/
│ │ │ └── ExampleUtil.java
│ │ ├── web/
│ │ │ ├── ExampleApi.java
│ │ │ └── ExampleController.java
│ │ └── AlphaApplication.java
│ └── resources
│ └── application.yml
└── test/
```
**config**: Arquivos anotados com anotação @Configuration, para indicar as classes que serão usadas para configurações e definições de beans.
**domain**: Classes que descrevem o nosso modelo de domínio, sendo a representação visual de classes conceituais ou objetos do mundo real em um domínio de interesse.
**dto**: _Response_ e _Request_, Classes javas para comunicação rest entre a backend e o front, afim de não expor as classes de domínios.
**Repository**: Interface JPA para comunicação com o banco de dados.
**service**: Classes responsáveis pela lógica de negócio.
**web**: _Api_ e _Controller_, interface contendo as anotações de geração da documentação do Swagger, e
Classe Controller, onde serão definidos os endpoints que serão nossa interface com o cliente (Vue.js).
**resources**: Recursos e configurações de propriedades da aplicação.
##### web
```plaintext
alpha-frontend/
├── public/
│ ├── favicon.ico
│ └── index.html
├── src/
│ ├── assets/
│ │ └── logo.png
│ ├── models/
│ │ └── example.js
│ ├── router/
│ │ └── index.js
│ ├── service/
│ │ └── example.service.js
│ ├── views/
│ │ └── example.vue
│ ├── App.js
│ └── main.js
├── .gitignore
├── README.md
├── babel.config.js
└── package.json
```
**models**: Modelos de request para requisições e de para response para respostas entre a comunicação rest do front com o backend.
**router**: Definição das rotas do cliente.
**service**: Definição da lógica para a chamada de um endpoint do backend de um determinado contexto especifico de um endpoint de uma controller.
**Repository**: Interface JPA para comunicação com o banco de dados.
**service**: Classes responsáveis pela lógica de negócio.
![](http://tools.ages.pucrs.br/alfa/alfa-wiki/raw/master/images/diagrama2.png)
Clone repository
  • Arquitetura
  • Banco de Dados
  • Boas Práticas
  • C4 Model
  • Configuração
  • Escopo
  • Instruções
  • Mockups
  • POC Amazon
  • Padrão Merge Request
  • Processos
  • Home