Giter Club home page Giter Club logo

tabnews.com.br's Introduction

Instalar e rodar o projeto

Rodar o TabNews em sua máquina local é uma tarefa extremamente simples.

Dependências globais

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.

Dependências locais

Então após baixar o repositório, não se esqueça de instalar as dependências locais do projeto:

npm install

Rodar o projeto

Para rodar o projeto localmente, basta rodar o comando abaixo:

npm run dev

Isto 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/status

Observaçõ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 .env encontrado 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.

Cadastro e Login de usuários

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.

Manualmente criar um usuário

  1. Após subir os serviços, acesse http://localhost:3000/cadastro
  2. Preencha os dados e utilize qualquer email com formato válido, mesmo que este email não exista, por exemplo: [email protected]
  3. O backend irá enviar um email para o servidor local de emails e que pode ser acessado pelo endereço http://localhost:1080/
  4. Abra o email de Ativação e acesse o link para ativar sua conta de fato.
  5. Com a conta ativa, realize o login: http://localhost:3000/login

Utilizar usuários pré-cadastrados

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"):

Rodar os testes

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 test

Caso 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:services

Os 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:watch

Caso 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./get

Observaçõ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á usar regex para evitar usar esses caracteres, como por exemplo utilizar o . que representa o match com qualquer caractere. Isto foi utilizado nos exemplos acima para evitar os caracteres [ e ] dos arquivos.

Criar novas Migrations

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.

Commit das alterações

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

Diário de Desenvolvimento

Contribuidores

Lista de contribuidores

tabnews.com.br's People

Contributors

filipedeschamps avatar aprendendofelipe avatar rodrigokulb avatar geovani-brito avatar andrefd17 avatar luantoningalvan avatar brunofamiliar avatar dependabot[bot] avatar andreghisleni avatar caixetadev avatar miguelmachado-dev avatar 33gustavo33 avatar erickcreis avatar liverday avatar inovaprog avatar vinicius-arcanjo avatar edersonlucas avatar coffeeispower avatar gabrieldev525 avatar gabrielew avatar eletroswing avatar thenriquedb avatar vitoropereira avatar silvaezequias avatar fabricioffc avatar gabrielsozinho avatar tembra avatar omariosouto avatar leotorresds avatar lucasmanto avatar

Stargazers

Rodrigo Macedo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.