|
|
|
| [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) |