O TabNews nasceu com o objetivo de ser um local com conteúdos de valor concreto para quem trabalha com tecnologia.
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 os testes
- Formas de contribuir
- Histórico do desenvolvimento
- Contribuidores
Rodar o TabNews em sua máquina local é uma tarefa extremamente simples.
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)
Com o repositório clonado e as dependências globais instaladas, você pode instalar as dependências locais do projeto:
npm install
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.
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:
[email protected]
- 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:
"[email protected]"
+"password"
- Usuário padrão:
"[email protected]"
+"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 test
Caso queira manter os serviços e testes rodando enquanto desenvolve (e rodando novamente a cada alteração salva), 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 arquivos específicos de teste, você pode utilizar uma expressão regular (regex
) para dar match
no que quiser. Não é necessário digitar o caminho inteiro para o arquivo, veja alguns exemplos abaixo:
# Rodar todos os testes de "users" da api "v1"
npm run test:watch -- v1/users/
# Rodar apenas o arquivo tests/integration/api/v1/_use-cases/registration-flow.test.js
npm run test:watch -- registration-flow
# Rodar apenas o arquivo tests/integration/api/v1/contents/[username]/patch.test.js
npm run test:watch -- 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, mas você poderá usarregex
para evitar usar esses caracteres, como por exemplo utilizar o.
que representa omatch
com qualquer caractere. Isto foi utilizado nos exemplos acima para evitar os caracteres[
e]
dos arquivos.
Você pode contribuir com o projeto de várias formas diferentes:
- Criar conteúdos no site: você pode criar publicações ou comentários no TabNews com conteúdo de valor para outros leitores. Para entender mais sobre isso, leia sobre a plataforma e veja as perguntas mais frequentes.
- Reportar privadamente problemas de segurança: problemas que envolvem falhas de segurança devem ser reportados de forma privada para possibilitar a discussão das vulnerabilidades diretamente com os mantenedores do repositório.
- Participar de debates em issues do repositório: mesmo sem implementar algo no código, você pode contribuir com detalhes para a resolução de algum problema ou com ideias de implementação de algum recurso.
- Enviar PRs com soluções previamente debatidas: se você encontrou um issue que foi debatido e deseja implementá-lo, pode abrir um PR com a solução para ser avaliada e incorporada no TabNews.
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 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.