API REST in Node.js usando ES6 and Express com Code Coverage e autenticação JWT
https://weberamaral.github.io/cs-desafio-node/
Aplicação disponibilizada em: http://dev-cs-desafio-node.sa-east-1.elasticbeanstalk.com/
Retorna a versão e nome da aplicação
Simples health check da aplicação
Cadastra novos usuários na aplicação
Recupera um determinado usuário pelo ID
Autentica um usuário na aplicação
- ECMAScript 6 - Escrita do código fonte.
- Geração de token de usuário com JsonWebToken - usando jsonwebtoken
- Code Linting - Javascript code linting usando ESLint para identificar e reportar padrões de escrita em Javascript. Utilizando as regras bases de eslint-contrib-airbnb
- Reinicialização automática do servidor - Reinicialização do servidor com nodemon
- Debugging via debug - Apresenta informações de debug quando configurada a variável DEBUG na aplicação.
- Validações de parametros de entrada via express-validation - Valida body, params, quary, headers e cookies da requisição via middleware.
- Pre-commit hooks - Roda as tarefas de lint e tests em cada comit na aplicação.
- Securança do App via helmet - Helmet ajuda na segurança de aplicações Express, configurando diversos HTTP headers e mais...
- Suporte CORS via cors
- Utilização de http-status - Para configurar os status code da aplicação.
- .editorconfig - Para padronização de configurações entre IDEs
- AWS Beanstalk - Host para aplicação
- MySQL com ORM Sequelize
- Conta de desenvolvimento em aws.amazon.com
- AWS Elastic BeanStalk elasticbeanstalk
- AWS CLI - Instruções de instalação AWS CLI install
- AWS EB CLI - Instruções de instalação AWS EB CLI install
- NodeJS >=6.9 nodejs
- NPM >=3
- MySQL server
Clone o repositório:
git clone https://github.com/weberamaral/cs-desafio-node.git
cd cs-desafio-node
Instale as dependencias:
npm install
Configure as variáveis de ambiente:
cp .env.example .env
Inicie o servidor:
# Iniciando o servidor em produção
npm start
# Iniciando o servidor em desenvolvimento
npm run start:development
Testes:
# Rodando os testes escritos em ES6
npm test
# Rodando os testes junto com a cobertura de testes
npm run test:coverage
# Rodando os testes em modo escuta
npm run test:watch
Lint:
# Lint do código escrito em ES6
npm run lint
# Lint do código escrito em ES6 em modo escuta
npm run lint:watch
Init, Create e Deploy:
A inicialização da aplicação para host no AWS Elastic BeanStalk:
eb init cs-desafio-node --region=sa-east-1
A criação do ambiente no AWS Elastic BeanStalk:
eb create development
Para deploy da aplicação é utilizado a CLI do elastic beanstalk que assume como versionamento o repositório git, configurado.
npm run deploy
Este comando faz com que o projeto seja enviado para o Bucket S3 - com versão de acordo com a tag da aplicação.
Os arquivos ignorados para envio ao servidor são informados em .ebignore
.
As variáveis de ambientes básicas - que podem ser versionadas - são informadas dentro da pasta .ebextensions
A biblioteca winston é utilizada para log da aplicação. Utilizando multiplos transportes por nível de log.