Introdução
Nesta série, irei demonstrar a minha versão do desafio proposto no Alura Challenges #2.
O que é um Challenge da Alura?
"É uma forma de implementar o Challenge Based Learning que a Apple ajudou a criar. Um mecanismo onde você vai engajar em cima de um problema, para só depois investigar soluções com cursos, conteúdo e conversas; ou até mesmo com o conhecimento que você já possui! Finalmente vai agir e colocar seu projeto no ar. Tudo isso com você comentando e ajudando nos projetos de outros alunos e alunas."
No que consiste esse desafio?
Ao longo de 4 semanas foram disponibilizados 1 painel por semana com os cards de funcionalidades que deveriam ser implementadas.
A minha versão
Eu escolhi o framework NestJs para o desafio, que traz uma série de facilidades para o desenvolvimento, além de uma ótima arquitetura.
E como essa série vai funcionar?
A cada semanas, farei posts com as implementações realizadas, que deve seguir mais ou menos assim:
Semana 1:
- API de Vídeos com rotas implementadas segundo o padrão REST;
- Validações feitas conforme as regras de negócio;
- Implementação de base de dados para persistência das informações;
- Testes das rotas GET, POST, PATCH e DELETE.
Semana 2:
- Adicionar
categorias
e seus campos na base de dados; - Rotas CRUD para
/categorias
; -
Incluir campo
categoriaId
no modelovideo
; - Escrever os testes necessários.
Semana 3:
- Paginação de videos
- Segurança para os recursos
Semana 4:
- Documentando a API com Swagger
- Integrando com o front-end
- Conclusão
Hoje como "dia 0", mostrarei como vamos preparar e configurar tudo o que é necessário para iniciarmos esse projeto, go go go!
Configurando o projeto
Para começarmos a brincadeira, precisamos instalar e configurar o nosso ambiente.
Vou utilizar como IDE o VSCode, que você pode baixar aqui.
Como linguagem de programação, vou utilizar o NodeJs (Typescript) na versão 14, download aqui.
Após o download e instalação deles, vamos criar uma pasta chamada aluraChallenge2 e abri-la no VSCode.
Nele, vamos abrir o terminal integrado
e digitar os comandos:
npm i -g @nestjs/cli
para instalar o CLI do Nest globalmente e
nest new alura-challenges-2
para criar o novo projeto Nest.
O CLI vai perguntar qual o gerenciador de pacotes que vamos utilizar e escolheremos o npm.
feito isso, a instalação será feita e uma mensagem de sucesso aparecerá ao final.
Legal, criamos o projeto, mas não para por aí. Vamos reabrir o VSCode na pasta alura-challenges-2 que o Nest criou e repare que já nos foi disponibilizado toda uma organização de pastas e configurações de testes, linter, prettier e git, o que já nos adianta demais, só que para elevar ainda mais o nível, vamos adicionar algumas outras ferramentas que vão nos ajudar na padronização do código.
Para que a gente proteja e padronize nossos commits, vamos utilizar os pacotes:
husky e lint-staged
npm install husky@4 lint-staged --save-dev
e adicionar no nosso package.json
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.ts": [
"eslint --fix", "npm test", "git add"
]
}
vamos instalar também os pacotes commitlint e commitizen
npm i @commitlint/config-conventional @commitlint/cli commitizen --save-dev
Assim que terminar a instalação, execute:
npx commitizen init cz-conventional-changelog --save-dev --save-exact --force
precisaremos agora criar um arquivo na raiz do projeto com o nome commitlint.config.js e o conteúdo
module.exports={
extends: ['@commitlint/config-conventional']
}
após a criação desse arquivo, vamos executar o comando:
npx mrm lint-staged
e após ele, vamos adicionar mais dois hooks no husky, com os comandos:
npx husky add .husky/commit-msg 'npx commitlint --edit "$1"'
npx husky add .husky/prepare-commit-msg 'exec < /dev/tty && git cz --hook || true'
Com isso, teremos a segurança de que só conseguiremos efetuar commits seguindo os padrões do conventional commits e passando nos testes.
Vamos testar?
Adicionaremos todos os arquivos alterados:
git add .
E faremos o commit:
git commit
Ao fazer isso, o husky irá chamar o lint-staged, que por sua vez rodará os comandos que colocamos no package.json, chamando a CLI do commitlint, se tudo estiver correto.
E a partir daí, você vai preenchendo conforme a sua alteração:
Após responder tudo, ele fará o commit (já padronizado)
Ufa! Por enquanto é isso...
"Uma das melhores formas de aprender é se propor a ensinar..."
Eu criei esses posts com a intenção de exercitar e fixar meus conhecimentos, mas talvez isso ajude você que está lendo também.
Se você gostou desse post, reaja, comente, compartilhe... enfim, faça algo para eu sentir que não falei sozinho. rs
Abraços e até os próximos...
Top comments (0)