Abaixo estão algumas orientações e dúvidas comuns ao desenvolvimento do projeto.
Se houver qualquer outra dúvida ou problema, é só procurar a monitoria ou postar uma thread no slack. Estamos juntos! 👍
‼️ Antes de começar a desenvolver
-
Clone o repositório
-
Copie o endereço SSH do repositório e use-o para cloná-lo em sua máquina:
- Por exemplo:
git clone [email protected]:tryber/sd-0x-project-x.git
.
- Por exemplo:
-
Entre na pasta do repositório que você acabou de clonar:
cd <diretório-do-projeto>
-
-
Crie uma branch a partir da branch
main
- Verifique que você está na branch
main
- Exemplo:
git branch
- Exemplo:
- Se não estiver, mude para a branch
main
- Exemplo:
git checkout main
- Exemplo:
- Agora crie uma branch à qual você vai submeter os
commits
do seu projeto- Você deve criar uma branch no seguinte formato:
nome-de-usuario-nome-do-projeto
- Exemplo:
git checkout -b joaozinho-project-x
- Você deve criar uma branch no seguinte formato:
- Verifique que você está na branch
-
Para cada etapa do desenvolvimento, adicione as mudanças ao stage do Git e faça um
commit
- Verifique que as mudanças ainda não estão no stage
- Exemplo:
git status
(devem aparecer listadas as alterações realizadas em vermelho)
- Exemplo:
- Adicione o novo arquivo ao stage do Git
- Exemplo:
git add .
(adicionando todas as mudanças - que estavam em vermelho - ao stage do Git)git status
(devem aparecer listadas as alterações realizadas em verde)
- Exemplo:
- Faça o
commit
inicial- Exemplo:
git commit -m 'Iniciando o projeto X! #VQV 🚀'
(fazendo o primeiro commit)git status
(deve aparecer uma mensagem tipo nothing to commit )
- Exemplo:
- Verifique que as mudanças ainda não estão no stage
-
Adicione a sua branch com o novo
commit
ao repositório remoto- Usando o exemplo anterior:
git push -u origin joaozinho-sd-0x-project-x
- Usando o exemplo anterior:
-
Crie um novo
Pull Request
(PR)-
Vá até a página de Pull Requests do repositório no GitHub.
-
Clique no botão verde "New pull request"
-
Clique na caixa de seleção "Compare" e escolha a sua branch com atenção
-
Clique no botão verde "Create pull request"
-
Adicione uma descrição para o Pull Request e clique no botão verde "Create pull request"
-
Não se preocupe em preencher mais nada por enquanto!
-
Volte até a página de Pull Requests do repositório e confira que o seu Pull Request está criado
-
⌨️ Durante o desenvolvimento
-
Faça
commits
das alterações que você fizer no código regularmente -
Lembre-se de sempre após um (ou alguns)
commits
atualizar o repositório remoto -
Os comandos que você utilizará com mais frequência são:
git status
(para verificar o que está em vermelho - fora do stage - e o que está em verde - no stage)git add
(para adicionar arquivos ao stage do Git)git commit
(para criar um commit com os arquivos que estão no stage do Git)git push -u nome-da-branch
(para enviar o commit para o repositório remoto na primeira vez que fizer opush
de uma nova branch)git push
(para enviar o commit para o repositório remoto após o passo anterior)
🤝 Depois de terminar o desenvolvimento (opcional)
Para "entregar" seu projeto, siga os passos a seguir:
- Vá até a página DO SEU Pull Request, adicione a label de "code-review" e marque seus colegas
- No menu à direita, clique no link "Labels" e escolha a label code-review
- No menu à direita, clique no link "Assignees" e escolha o seu usuário
- No menu à direita, clique no link "Reviewers" e digite
students
, selecione o timetryber/students-sd-xx
ondexx
é o número da sua turma
Se ainda houver alguma dúvida sobre como entregar seu projeto aqui tem um video explicativo.
🕵🏿 Revisando um pull request
Use o conteúdo sobre Code Review para te ajudar a revisar os Pull Requests.
⚠️ Não rode o comando npm audit fix
!
- Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.
🔽 Instalação de dependências com npm install
- Instala as dependências Node da aplicação na pasta
node_modules
. - Os outros scripts do projeto só funcionam corretamente após rodar este comando.
🔁 Live reload com npm run dev
Usaremos o Nodemon para monitorar as mudanças nos arquivos e reiniciar o servidor automaticamente.
Este projeto já vem com as dependências relacionadas ao nodemon configuradas no arquivo package.json
.
Para iniciar o servidor em modo de desenvolvimento basta executar o comando npm run dev
. Este comando fará com que o servidor reinicie de forma automática ao salvar uma modificação realizada nos arquivos do projeto.
🎛 Rodando o linter com npm run lint
Usaremos o ESLint para fazer a análise estática do seu código.
Este projeto já vem com as dependências relacionadas ao linter configuradas nos arquivos package.json
.
Para poder rodar o ESLint
em um projeto basta executar o comando npm install
dentro do projeto e depois npm run lint
. Se a análise do ESLint
encontrar problemas no seu código, tais problemas serão mostrados no seu terminal. Se não houver problema no seu código, nada será impresso no seu terminal.
Você pode também instalar o plugin do ESLint
no VSCode
. Para isso, basta fazer o download do plugin ESLint
e instalá-lo.
🛠 Rodando testes com npm test
Usaremos o Jest e o Frisby para fazer os testes de API.
Este projeto já vem configurado e com suas dependências.
-
Executando todos os testes
Para poder executar os testes, inicie sua aplicação com
npm run dev
, em seguida, basta executar o comandonpm test
e todos os seus testes serão executados. -
Executando um teste específico
Para executar um teste específico, inicie sua aplicação com
npm run dev
, em seguida, basta executar o comandonpm test nome-do-teste
.Colocamos o número do requisito como pré-fixo para facilitar, veja abaixo.
Ex: Para executar o teste referente ao 01-getAllTalkers, basta digitar
npm test 01
.⚠️ Importante: os comandos de testes podem ser executados tanto no terminal do seu computador quanto do Docker.
⛔ Erro de porta já utilizada: EADDRINUSE
ou port is already allocated
-
Se você se deparar com esse tipo de erro, quer dizer que sua aplicação já está utilizando a
porta 3001
, seja com outro processo do Node.js ou algum container Docker!-
Você pode parar todos os processos Node com o comando
killall node
; -
Você pode parar um container Docker com o comando
docker stop <nome-do-container>
.
-
-
✨ Dica: Antes de iniciar qualquer coisa, observe os containers que estão em execução em sua máquina usando o comando
docker container ls
;
⚠️ Rode comandos do NPM de dentro do container Node
- Caso opte por utilizar o Docker, TODOS os comandos disponíveis no
package.json
(npm start, npm test, npm run dev, ...) devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comandodocker exec
citado acima.
⚠️ Rode comandos do Git fora do container Node
- O git dentro do container não vem configurado com suas credenciais. Ou faça os commits fora do container, ou configure as suas credenciais do git dentro do container.
⚠️ Use a versão 1.29 do Docker Compose
-
Para que você consiga rodar o seu projeto com docker e o avaliador funcione é fundamental que o seu docker compose esteja na versão 1.29.
- Verifique sua versão:
docker-compose --version
Se não for a versão 1.29, faça os seguintes comandos para atualizar a versão:
sudo rm /usr/local/bin/docker-compose sudo curl -L "<https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname> -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
🐳 Iniciando serviços com docker-compose up
-
O arquivo
docker-compose.yml
tem dois serviços:backend
: serviço Node, usado para rodar aplicação e os testesdb
: serviço do banco de dados MySQL
-
O comando
docker-compose up -d
:- Inicia o serviço
backend
- Esse serviço irá inicializar um container chamado
talker_manager
(definido no arquivo docker-compose.yml). - A flag
-d
faz o container rodar em segundo plano. - A partir daqui você pode acessar o container via CLI com
docker exec
ou abri-lo no VS Code.
- Esse serviço irá inicializar um container chamado
- Inicia o serviço
db
- Esse serviço irá inicializar um container chamado
talker_manager_db
- Ele é usado no requisito 12
- Esse serviço irá inicializar um container chamado
- Inicia o serviço
❓ Duvidas sobre a diferença entre container e service? Reveja a lição Serviço vs. Container na seção de Docker na plataforma. 👍
🐳 Acessando um terminal de um container com docker exec
- O comando
docker exec -it talker_manager bash
:- Dá acesso ao terminal interativo do container de nome
talker_manager
, que está rodando em segundo plano.
- Dá acesso ao terminal interativo do container de nome
✨ Desenvolvendo o projeto no VS Code de dentro do container
🐞🗡️ Depuração (Debugging)
Em primeiro lugar sua aplicação precisa estar rodando o script dev
via docker compose
.
Existe nesse projeto uma configuração de depuração para o VScode, localizada na pasta .vscode
.
Para utilizá-la você pode clicar no ícone de Run and Debug ou usar a tecla de atalho Ctrl + Shift + D
:
Vai parecer uma interface assim no canto superior do seu VScode:
O simbolo 🔽 é uma caixa de seleção, como um <select>
HTML, este abriga os modos de depuração que o VScode encontrou, nesse projeto temos apenas uma opção a Depurar com Docker
Para iniciar a depuração basta clicar no play verde
Se tudo der certo o debugger agora está conectado no processo que está rodando sua aplicação, você sabe que ele está funcionando se aparecer essa barrinha no topo da sua tela:
Agora você consegue ativar os breakpoints ⏺️ ao lado do número da linha
Quando clicar nele, este fica vermelho e quando a API executar essa linha, ela vai parar.
Com tudo preparado, vamos fazer um teste, vou fazer uma requisição para acionar a execução da linha 7 do src/app.js
:
Note que todas a variáveis do escopo local (_request
, response
, this
) de onde o cursor está podem ser inspecionadas.
Agora é com você! ✨
Mas vou deixar aqui uma colinha de como funciona cada ícone da barra de depuração:
▶️ Continue: Vai executar o código até chegar no próximo breakpoint, dar um erro ou não haver mais o que executar;⤵️ Step Over: Executa linha atual e pula para a próxima;- ⬇️ Step Into: Entra dentro da função que vai ser executada na linha do cursor;
- ⬆️ Step Out: Saí da função que vai ser executada na linha do cursor, executando o resto dela;
- 🔄 Restart: Reinicia o processo de depuração, matando o processo atual e criando um novo.
- ⏹️ Stop: Para o processo de depuração, mata o processo.
💡 Anota a dica: talvez você tenha se perguntado: uai, mas não tem como voltar? Realmente não tem, é um processo que só vai na direção que o código executa. Logo, para "voltar uma linha" é preciso que ativemos o gatilho que faz o depurador passar por aquela linha que a gente quer voltar, fazendo uma nova requisição por exemplo.
🧪 O avaliador pode testar os requisitos fora da ordem que aparecem no README
- O avaliador automático não necessariamente avalia seu projeto na ordem em que os requisitos aparecem no readme. Isso acontece para deixar o processo de avaliação mais rápido. Então, não se assuste se isso acontecer, ok?
🗂 Compartilhe seu portfólio!
Após finalizar os requisitos, chegou a hora de mostrar ao mundo que você aprendeu algo novo! 🚀
Siga esse guia que preparamos com carinho para disponibilizar o projeto finalizado no seu GitHub pessoal.
Esse passo é super importante para ganhar mais visibilidade no mercado de trabalho, mas também é útil para manter um back-up do seu trabalho.
E você sabia que o LinkedIn é a principal rede social profissional e compartilhar o seu aprendizado lá é muito importante para quem deseja construir uma carreira de sucesso? Compartilhe esse projeto no seu LinkedIn, marque o perfil da Trybe (@trybe) e mostre para a sua rede toda a sua evolução.