... | ... | @@ -4,8 +4,95 @@ |
|
|
|
|
|
## Arquitetura
|
|
|
|
|
|
<h3>Acesso rápido:</h3>
|
|
|
* [Tecnologias utilizadas](#tecnologias)
|
|
|
* [Diagrama de Deploy](#deploy)
|
|
|
* [Diagrama de Componentes](#componentes)
|
|
|
* [Build da aplicação](#build)
|
|
|
|
|
|
---
|
|
|
<a href="#tecnologias" name="tecnologias"></a>
|
|
|
#### Tecnologias utilizadas
|
|
|
|
|
|
Descrevemos, a seguir, as tecnologias utilizadas no eVote.
|
|
|
|
|
|
**Node.js:** interpretador, com código aberto, de código JavaScript de modo assíncrono e orientado a eventos.
|
|
|
|
|
|
Versão utilizada: 10.14.1.
|
|
|
|
|
|
|
|
|
**npm:** gerenciador de pacotes padrão para o ambiente de tempo de execução do JavaScript Node.js.
|
|
|
|
|
|
Versão utilizada: 6.4.1.
|
|
|
|
|
|
|
|
|
**React Native:** estrutura de aplicativo móvel de código aberto usada para desenvolver aplicativos para Android, iOS e UWP, permitindo que os desenvolvedores usem o React junto com os recursos da plataforma nativa.
|
|
|
|
|
|
Versão utilizada: Expo SDK v32.0.0.
|
|
|
|
|
|
|
|
|
**Expo:** ferramenta utilizada no desenvolvimento mobile com React Native que permite o fácil acesso às APIs nativas do dispositivo sem precisar instalar qualquer dependência ou alterar código nativo, possibilitando a pronta execução do código desenvolvido no computador e visualizado no celular.
|
|
|
|
|
|
Versão utilizada: 32.0.0.
|
|
|
|
|
|
|
|
|
**Firebase:** conjunto de tecnologias propostas como “Backend as a Service”:
|
|
|
- **Realtime Database:** banco de dados NoSQL hospedado na nuvem.
|
|
|
- **Storage:** armazenador de conteúdo gerado pelo usuário, como fotos e PDFs.
|
|
|
- **Authentication:** solução de identidade completa, compatível com contas de e-mail e senha.
|
|
|
|
|
|
---
|
|
|
|
|
|
<a href="#deploy" name="deploy"></a>
|
|
|
#### Diagrama de Deploy
|
|
|
![evote-deploy](/uploads/e4070051b60cef165534652f9d41ea00/evote-deploy.jpeg)
|
|
|
|
|
|
a inserir
|
|
|
- diagrama de componentes (atualizado?)
|
|
|
- fluxo entre telas? (melhor ficar na parte de dados) |
|
|
A solução, uma vez gerado o build contendo as dependências de `node_modules` (mais informações no final da página), se comunica com o banco de dados (Firebase) através da internet, via protocolo HTTP.
|
|
|
|
|
|
---
|
|
|
|
|
|
<a href="#componentes" name="componentes"></a>
|
|
|
#### Diagrama de Componentes
|
|
|
![evote-componentes](/uploads/0647da06ce5f46dacde9efcf13fbc13f/eVote_-_Component_Diagram_v1.png)
|
|
|
|
|
|
A dinâmica de criação de salas de votação é representada no diagrama de componentes acima.
|
|
|
|
|
|
O Realtime Database do Firebase atua como centro de informações do
|
|
|
sistema, mantendo dados de usuários cadastrados e logados em i0 e i1, e se
|
|
|
alimentando do estado de uma sala de votação recém criada em i6.
|
|
|
|
|
|
Um usuário, Administrador nesse cenário, fornece entradas através de telas
|
|
|
para criar a sala de votação, composta de datas de início e fim, informações para
|
|
|
contexto (título, descrição, arquivo), questões e convidados. Essas informações são,
|
|
|
então, consumidas por usuários cuja ID é referenciada entre os Convidados, e a
|
|
|
verificação para o acesso a essa sala é requisitada também ao Firebase, via i4.
|
|
|
|
|
|
---
|
|
|
|
|
|
<a href="#build" name="build"></a>
|
|
|
#### Build da aplicação
|
|
|
|
|
|
Tenha o expo instalado na sua máquina.
|
|
|
```
|
|
|
npm install expo-cli --global
|
|
|
```
|
|
|
Crie uma conta em [expo.io](https://expo.io), valide-a, e insira seu usuário e senha também no terminal.
|
|
|
```
|
|
|
expo login
|
|
|
```
|
|
|
Se você ainda não instalou as dependências do projeto clonado, instale-as.
|
|
|
```
|
|
|
npm install
|
|
|
```
|
|
|
Suba, então, um servidor para o projeto. (e aguarde o bundler se manifestar)
|
|
|
```
|
|
|
npm start
|
|
|
```
|
|
|
Concluídas essas etapas, o build está pronto para ser realizado.
|
|
|
```
|
|
|
expo build:android
|
|
|
```
|
|
|
|
|
|
Se tudo der certo, o terminal informará o link para acompanhar o build, onde a apk será disponibilizada.
|
|
|
|
|
|
Se algo der errado, sinta-se livre para chamar o @joao.lerina . |
|
|
\ No newline at end of file |