Tecnologias
Comunicação entre as tecnologias utilizadas
Fluxograma de chamadas da aplicação
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
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.