Este aplicativo tem o objetivo de capturar casos e obitos de COVID-19 em uma fonte internacional e disponibilizar, atraves de graficos, a comparacao entre paises por Número de casos/obitos, casos/obitos a cada 1 milhao e porcentagem de casos/obitos da populacao.
Tecnologias e linguagens utilizadas nesta aplicacao para obter melhor desempenho, agrupado por captura e API e interface.
| Nome | Versao | Objetivo |
|---|---|---|
| NodeJS | 10.17.0 | Interpretador Javascript |
| NPM | 6.11.3 | Gerenciar dependencias |
| Typescript | 3.8.3 | Transpiler para NodeJS |
| Nome | Versao | Objetivo |
|---|---|---|
| NodeJS | 10.17.0 | Interpretador Javascript |
| NPM | 6.11.3 | Gerenciar dependencias |
| VueJS | 2.6.11 | Framework Javascript |
| Bootstrap | 4.4.1 | Framework CSS |
Compatibilidade de infraestrutura deste este projeto, agrupado por captura, API e Interface.
| Nome | Objetivo |
|---|---|
| AWS CloudWatch | Agendamento de captura de dados |
| AWS Lambda (NodeJS) | Execucao de captura de dados |
| AWS EC2 (NodeJS) | Execucao de captura de dados |
| AWS ECS (NodeJS) | Execucao de captura de dados |
| Crontab | Agendamento de captura de dados |
| Cloud server (NodeJS) | Execucao de captura de dados |
| Nome | Objetivo |
|---|---|
| AWS API Gateway | Configurar rotas disponiveis para API |
| AWS Lambda (NodeJS) | Disponibilizar dados por execucao do API Gateway |
| AWS EC2 (Nginx + NodeJS) | Disponibilizar API de dados |
| AWS ECS (Nginx + NodeJS) | Disponibilizar API de dados |
| Cloud server (Nginx + NodeJS) | Disponibilizar API de dados |
| Nome | Objetivo |
|---|---|
| AWS S3 | Diretorio virtual para salvar arquivos estatico |
| AWS Cloudfront | Exibir arquivos estatico salvos no S3 |
| AWS EC2 (Nginx) | Disponibilizar arquivos estatico |
| AWS ECS (Nginx) | Disponibilizar arquivos estatico |
| Cloud server (Nginx) | Disponibilizar arquivos estatico |
Recursos para gravacao e leitura dos dados de casos e obitos
| Nome | Versao | Objetivo |
|---|---|---|
| Sync Request | 6.1.0 | Realizar a captura dos dados |
| SQLite | 3.27.2 | Banco de dados para salvar os dados capturados |
Para maior facilidade utilize Visual Studio Code para edicao de codigo.
O repositorio deste projeto esta dividido em duas partes, sendo api/ (API e captura de dados) e frontend/ (interface).
- Faca uma copia do repositorio
$ git clone https://github.com/00F100/covid-chart.git- Copie as variaveis de ambiente, conforme abaixo:
$ cp api/.env-dev api/.env
$ cp frontend/.env-dev frontend/.env- Faca os ajustes nas variaveis, conforme abaixo:
Variaveis de ambiente API
api/.env
| Variavel | Tipo | Objetivo |
|---|---|---|
| API_PORT | integer | Porta onde a API vai estar disponivel |
| DATASOURCE_lOCATION | string | Path para o diretorio onde se encontra o arquivo database.sqlite |
| VIEW_INDEX | string | Path para o diretorio api\src\public |
| LOGGER_LEVEL | string | Level do log, ex: info, debug, warn, error, fatal |
| LOGGER_TYPE | string | Saida do log, ex: console |
| LOGGER_FILE | string | Path para arquivo de log |
| DIR_NAME | string | Path para o diretorio api\src |
| NODE_ENV | string | Modo de execucao do NodeJS |
Variaveis de ambiente Frontend
frontend/.env
| Variavel | Tipo | Objetivo |
|---|---|---|
| VUE_APP_API_SCHEMA | string | Schema da API de dados, ex: http |
| VUE_APP_API_HOST | string | Dominio da API de dados, ex: localhost |
| VUE_APP_API_PORT | integer | Porta da API de dados, ex: 3000 |
| VUE_GOOGLE_ANALYTICS_TAG | string | Tag GA para acompanhamento |
- Apos execute
npm install, conforme abaixo:
API
$ cd api && npm installInterface
$ cd frontend && npm installVisual Studio:
No
DebugselecioneAPI Web server (TypeScript)e execute.
Terminal:
Execute
cd api && npm run api-develop
Visual Studio:
No
DebugselecioneHandle Extract (TypeScript)e execute.
Terminal:
Execute
cd api && node dist/bootstrap/handler.js extract [idCountry]onde[IdCountry]e o ID do pais no banco de dadosdatasource.sqlite.
Visual Studio Code:
No
DebugselecioneHandle Test Datasource (TypeScript)e execute.
Terminal:
Execute
cd api && node dist/bootstrap/handler.js test-datasource
No terminal bash execute:
$ cd frontend && npm run serveInterface
server {
server_name covidlast.com www.covidlast.com;
listen 443 ssl http2;
root /var/www/frontend;
ssl on;
ssl_certificate /etc/nginx/ssl/covidlast.pem;
ssl_certificate_key /etc/nginx/ssl/covidlast.key;
location / {
index index.html;
}
}
API
server {
server_name api.covidlast.com;
listen 443 ssl http2;
ssl on;
ssl_certificate /etc/nginx/ssl/covidlast.pem;
ssl_certificate_key /etc/nginx/ssl/covidlast.key;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://localhost:3000;
}
}
Build:
$ git clone https://github.com/00F100/covid-chart.git
$ cd covid-chart/api
$ cp .env-prd .env
$ npm install && npm run buildDeploy:
$ cd covid-chart/api
$ sudo kill `ps -ef | grep node | grep -v grep | awk '{print $2}'` || true
$ sudo nohup node dist/bootstrap/web.js > /var/log/covidlast-api-nohup.log &Build:
$ git clone https://github.com/00F100/covid-chart.git
$ cd covid-chart/frontend
$ cp .env-prd .env
$ npm install && npm run buildDeploy:
$ cp covid-chart/frontend/dist/* /var/www/frontend