Skip to content

filipedeschamps/tabnews.com.br

Repository files navigation

O TabNews é um site focado na comunidade da área de tecnologia, destinado a debates e troca de conhecimentos por meio de publicações e comentários criados pelos próprios usuários.

Esse repositório contém o código-fonte do site e da API do TabNews.

O TabNews disponibiliza APIs públicas que você pode utilizar para construir outros projetos relacionados, desde que respeite os Termos de Uso.

Conteúdo

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 v18 (ou qualquer versão superior)
  • Docker Engine v17.12.0 com Docker Compose v1.24.1 (ou qualquer versão superior)

Dependências locais

Com o repositório clonado e as dependências globais instaladas, você pode instalar as dependências locais do projeto:

npm install

Rodar o projeto

Para rodar o projeto localmente, basta executar 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.

Criar um usuário manualmente

  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 salva), use o modo watch com o comando abaixo:

npm run test:watch:services

Os logs do Serviço Web e Vitest (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 executar (ou dar watch) em todos os testes e queira isolar arquivos específicos de teste, você pode filtrar pelo caminho. Não é necessário digitar o caminho inteiro para o arquivo e você também pode fornecer mais de um caminho, veja alguns exemplos abaixo:

# Rodar todos os testes de "users" e "status" da api "v1"
npm run test -- v1/users/ v1/status/

# Rodar apenas o arquivo tests/integration/api/v1/_use-cases/registration-flow.test.js
npm run test -- registration-flow

# Rodar apenas o arquivo tests/integration/api/v1/contents/[username]/patch.test.js
npm run test:watch:services -- username]/patch

# Rodar apenas o arquivo 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.

Formas de contribuir

Você pode contribuir com o projeto de várias formas diferentes:

Histórico de Desenvolvimento

Início do projeto

No início do projeto foram feitas 40 publicações no Wiki do repositório. Lá você encontrará informações desde como a ideia do TabNews surgiu e como foram as contribuições no início do projeto, até as definições do layout e outras tomadas de decisão.

Milestones

Milestones são marcos históricos do projeto para ajudar a guiar o desenvolvimento numa direção específica. Pelo GitHub é possível ver a Milestone em andamento e as Milestones encerradas.

Contribuidores

Lista de contribuidores