Rodar o TabNews em sua máquina local é uma tarefa extremamente simples.
Você precisa ter duas principais dependências instaladas:
- Node.js LTS v16 (ou qualquer versão superior)
- Docker Engine v17.12.0 com Docker Compose v1.24.1 (ou qualquer versão superior)
Utiliza nvm? Então pode executar nvm install na pasta do projeto para instalar e utilizar a versão mais apropriada do Node.js.
Então após baixar o repositório, não se esqueça de instalar as dependências locais do projeto:
npm installPara rodar o projeto localmente, basta rodar o comando abaixo:
npm run devIsto irá automaticamente rodar serviços como Banco de dados (incluindo as Migrations), Servidor de Email e irá expor um Serviço Web (Frontend e API) no seguinte endereço:
http://localhost:3000/
http://localhost:3000/api/v1/statusObservações:
- Para derrubar todos os serviços, basta utilizar as teclas
CTRL+C, que é o padrão dos terminais para matar processos. - Você pode conferir o endereço dos outros serviços dentro do arquivo
.envencontrado na raiz do projeto, como por exemplo o endereço e credenciais do Banco de Dados local ou o Frontend do Serviço de Email.
No ambiente de desenvolvimento você poderá tanto criar usuários manualmente (inclusive para receber e testar o email de ativação), quanto utilizar usuários pré-cadastrados e que já foram ativados para sua conveniência.
- Após subir os serviços, acesse http://localhost:3000/cadastro
- Preencha os dados e utilize qualquer email com formato válido, mesmo que este email não exista, por exemplo:
teste@teste.com - O backend irá enviar um email para o servidor local de emails e que pode ser acessado pelo endereço http://localhost:1080/
- Abra o email de Ativação e acesse o link para ativar sua conta de fato.
- Com a conta ativa, realize o login: http://localhost:3000/login
Por padrão, ao rodar o comando npm run dev será injetado dois usuários ativados, um com features padrões e outro com features administrativas como a habilidade de rodar as Migrations usando a API ou alterar o conteúdo de outros usuários. Segue abaixo as credenciais destes dois usuários ("email" + "senha"):
- Usuário Admin:
"admin@admin.com"+"password" - Usuário padrão:
"user@user.com"+"password"
Há várias formas de rodar os testes dependendo do que você deseja fazer, mas o primeiro passo antes de fazer qualquer alteração no projeto é rodar os testes de forma geral para se certificar que tudo está passando como esperado. O comando abaixo irá rodar todos os serviços necessários, rodar os testes e em seguida derrubar todos os serviços.
npm testCaso queira manter os serviços e testes rodando enquanto desenvolve (e rodando novamente a cada alteração), use o comando abaixo:
npm run test:watch:servicesOs logs do Serviço Web e Jest (dos testes) irão se misturar, então caso queira rodar eles de forma separada, abra dois terminais separados e rode o seguinte:
# Terminal 1
npm run dev
# Terminal 2
npm run test:watchCaso não queira dar watch em todos os testes e queira isolar apenas 1 arquivo de teste (ou um grupo de testes), você pode utilizar um simples regex para dar match no que quiser, por exemplo:
# Rodar apenas /tests/api/v1/_use-cases/registration-flow.test.js
npm run test:watch -- registration-flow
# Rodar todos os testes de "users" da api "v1"
npm run test:watch -- v1/users/
# Rodar apenas /tests/api/v1/users/[username]/patch.test.js
npm run test:watch -- username./patch
# tests/integration/api/v1/contents/[username]/[slug]/get.test.js
npm run test:watch -- contents/.username./.slug./getObservações:
- A forma como é tratado o caminho dos arquivos pode mudar dependendo do seu sistema operacional.
- A forma como o seu terminal interpreta caracteres especiais como
/ou[pode mudar, mas você poderá usarregexpara evitar usar esses caracteres, como por exemplo utilizar o.que representa omatchcom qualquer caractere. Isto foi utilizado nos exemplos acima para evitar os caracteres[e]dos arquivos.
Você pode utilizar o script migration:create, por exemplo:
npm run migration:create alter table users add tabcoins
Isto irá resultar em:
Created migration -- ./infra/migrations/1655399502254_alter-table-users-add-tabcoins.js
Caso esta nova migração esteja válida, ela será automaticamente executada na próxima vez que você rodar o comando npm run dev. Caso contrário, o serviço não irá subir e os logs de erro estarão registrados no arquivo migrations.log encontrado na raiz do projeto.
Após finalizar suas alterações e se certificar que todos os testes estão passando com o comando geral npm test, chegou a hora de fazer o commit das suas alterações.
Para ser auxiliado no padrão de commit que utilizamos, rode o comando abaixo e siga as instruções:
npm run commit