doc-para-stakeholders.md
0 → 100644
| # **Easy Class - Visão Geral Técnica da Solução** | ||
| O objetivo deste documento é sintetizar a arquitetura geral da solução e quais as tecnologias empregadas. Com isto visamos facilitar o processo de manutenção/extensão do trabalho realizado pelos desenvolvedores da Easy Class no futuro. A aplicação é composta por 3 projetos separados: | ||
| <br /> | ||
| * **Back-End (API)**: Consiste em um projeto em Express (Node) responsável pela implementação da API REST a ser consumida pelas demais aplicações-cliente da solução. Utiliza a arquitetura MVC, autenticação simples (I.e. usuário + senha) e armazena as informações em um banco de dados MongoDB. O projeto também incluí testes de integração que são implementados com o framework Jest e a biblioteca Supertest para geração de requisições HTTP. | ||
| <br /> | ||
| * **Front-End (web)**: Esta aplicação-cliente será executada no browser do usuários. Utiliza o framework JavaScript React e arquitetura Redux para gerenciamento de estado. Os estilos estão definidos utilizando arquivos SASS obtidos do framework CSS Bulma. Toda a aplicação é compilada pela ferramenta Webpack que gera um bundle otimizado a ser implantado no servidor em produção. Também utiliza Jest para testes e a biblioteca Enzyme para os testes unitários dos componentes React. | ||
| <br /> | ||
| * **Front-End (mobile)**: Utiliza o framework React-Native (uma derivação do mesmo framework React utilizado pelo projeto web) que torna possível o desenvolvimento da aplicação na linguagem JavaScript mas que gera código nativo para as plataformas Android e iOS. Desta forma têm-se apenas uma base de código para o projeto mobile além de utilizar a mesma linguagem utilizada nos demais projetos da solução. | ||
| <br /> | ||
| Os projetos Back-End e Front-End Web incluem scripts para que sua execução seja feita em containeres Docker. Durante o desenvolvimento os programadores podem utilizar a ferramenta Docker Compose para a criação dos containeres. A forma como executar localmente o projeto está descrito no arquivo README de cada um deles. | ||
| <br /> | ||
| ## **Infraestrutura e dados de acesso** | ||
| Todas as ferramentas utilizadas foram cadastradas com um email Gmail criado especificamente para o projeto. Os dados de acesso dessa conta são: | ||
| <br /> | ||
| ```` | ||
| GMAIL | ||
| Nome: Easy Class | ||
| Email: [email protected] | ||
| ```` | ||
| <br /> | ||
| A figura abaixo ilustra as ferramentas/plataformas envolvidas na infraestrutura do projeto: | ||
|  | ||
| <br /> | ||
| 1. Os desenvolvedores trabalham com o código-fonte de cada projeto localmente e utilizam o sistema de controle de versões Git para atualizar o repositório remoto no Github. | ||
| <br /> | ||
| 2. O GitHub é uma plataforma que hospeda repositórios gerenciados pela ferramenta Git. No caso do Easy Class, estas são as informações para acesso: | ||
| <br /> | ||
| ```` | ||
| Dados de acesso | ||
| Nome: EasyClassUser | ||
| Senha: -- | ||
| Organização: EasyClassApp | ||
| Repositório do projeto web | ||
| https://github.com/EasyClassApp/easy-class-web | ||
| Repositório do projeto API | ||
| https://github.com/EasyClassApp/easy-class-api | ||
| ```` | ||
| <br /> | ||
| 3 Cada repositório no Github possui duas branches: 'staging' e 'master'. Foi criado um hook entre essas branches e a plataforma de integração contínua TravisCI. Assim, basta que um desenvolvedor faça o push de alterações em uma dessas branches para que o processo de testes + deploy seja realizado pelo Travis. Os dados de acesso do Travis: | ||
| <br /> | ||
| ```` | ||
| https://travis-ci.org/EasyClassApp | ||
| Login com a conta do Google criada para o projeto | ||
| ```` | ||
| <br /> | ||
| 4 O Heroku é uma plataforma para hospedagem de aplicações. O Easy Class possui dois projetos: | ||
| * Staging: possui sempre a última versão da branch de staging e serve para testes durante o desenvolvimento) | ||
| * Produção: é o projeto será utilizado pelos usuários reais. | ||
| <br /> | ||
| Os dados para acesso ao dashboard e URLs dos projetos: | ||
| <br /> | ||
| ```` | ||
| Dados de acesso | ||
| Email: [email protected] | ||
| Senha: --- | ||
| Ambiente de staging web | ||
| https://easy-class-web-staging.herokuapp.com | ||
| Ambiente de produção web | ||
| https://easy-class-web.herokuapp.com | ||
| Ambiente de staging da API | ||
| https://easy-class-api-staging.herokuapp.com/api | ||
| Ambiente de produção da API | ||
| https://easy-class-api.herokuapp.com/api | ||
| ```` | ||
| <br /> | ||
| *Nota: as URLs referentes a API são para consumo de dados – para testá-las utilize a ferramenta Postman, cujos arquivos de endpoints e ambientes estão incluídos no projeto Back-End na pasta infrastructure.* | ||
| <br /> | ||
| 5 Todos os dados gerenciados pela aplicação estão em bancos de dados hospedados na plataforma mLab (https://mlab.com). Os dados para acesso ao dashboard: | ||
| ```` | ||
| Username: EasyClassUser | ||
| Senha: --- | ||
| ```` | ||
| \ No newline at end of file |