Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PoC] - Usando uma biblioteca de configurações do TabNews #1780

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

aprendendofelipe
Copy link
Collaborator

@aprendendofelipe aprendendofelipe commented Aug 16, 2024

Gostaria de opiniões sobre a ideia de uma biblioteca que centraliza as configurações do projeto TabNews e que pode ser utilizada no curso.dev (tanto como conteúdo, mas principalmente no código do site) e também por qualquer um que precise configurar um projeto com as mesmas configurações do TabNews, como infra parecida, testes, linter, etc.

Uma versão beta já está pública em https://www.npmjs.com/package/@tabnews/config, e lá tem algumas informações complementares no Readme.

Estou abrindo o PR principalmente para testar o C.I., mas quem quiser já pode testar localmente, pois está tudo funcional e resolvendo diversos problemas que temos atualmente em nosso ambiente de desenvolvimento.

Algumas coisas que foram resolvidas:

  • Atualização da configuração do ESLint para o novo padrão flat.
  • Possibilidade de usar quaisquer variáveis de ambiente compatíveis com o Next.js e com Docker Compose, além de poder criar todos os diferentes tipos de arquivos de variáveis de ambiente compatíveis com o Next.js.
  • Rodar testes e modo de desenvolvimento com diferentes bancos, o que facilita alguns testes manuais que exigem popular o banco de dados e sem risco de perder esses dados quando rodar os testes automatizados.
  • O orquestrador de testes consegue subir os serviços se eles não estiver no ar quando forem necessários.
  • Adiciona uma CLI com diversas funcionalidades, mas que ainda podemos adicionar muitas ferramentas para ajudar na criação e manutenção de projetos.

Depois irei organizar melhor o PR, criando diferentes commits, e também vou tornar público o repositório da biblioteca @tabnews/config 🤝

Copy link

vercel bot commented Aug 16, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
tabnews ✅ Ready (Inspect) Visit Preview 💬 Add feedback Aug 16, 2024 0:55am

@aprendendofelipe aprendendofelipe added the em discussão Em discussão para definir se isso será implementado ou não label Aug 16, 2024
Copy link
Collaborator

@Rafatcb Rafatcb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eu achei isso demais! Organizou bastante coisa e pode ser muito útil para mantermos um padrão entre os projetos "dos mesmos criadores" (curso.dev, TabNews e possíveis projetos futuros).

Eu estava escrevendo e refletindo sobre vários pontos diferentes, mas consegui resumir tudo em um ponto só:

TabNews como white label

Já foi comentado várias vezes que seria muito legal ter o TabNews como um white label. O próprio curso.dev surgiu usando o TabNews como base, e outras pessoas já pediram isso (exemplo).

Como o curso.dev surgiu a partir do TabNews, separar as configurações faz total sentido, porque pode facilitar mantê-los a par nesse ponto, mas não sei se esse é o caminho certo para tornar o TabNews um white label. E eu digo que não sei porque realmente não sei como é um "código amigável para white label".

Essa proposta de separar as configurações faz parte desse objetivo de tornar o TabNews em white label? Se sim, pode me ajudar a entender a visão geral de como esse processo se dará? Porque, atualmente, o que consigo avaliar aqui é "Se eu criar um projeto agora, quero adicionar o @tabnews/config e ter todas essas configurações no meu projeto?"

E, a resposta para a minha pergunta seria "dificilmente". São muitas configurações diferentes para fazer sentido ter um projeto com as mesmas tecnologias: Prettier, ESLint, Vitest, Next, React, Docker, Mailcatcher, PostgreSQL, linter de commit etc.

Repito, para o estado atual, faz sentido porque (me parece que) facilita a manutenção do TabNews e curso.dev lado a lado, mas caso optemos por criar um novo projeto, fico com a dúvida acima. Me parece que um novo projeto que queira usar todas essas configurações, talvez queira na verdade usar o TabNews como white label.

pages/[username]/[slug]/index.public.js Show resolved Hide resolved
tests/orchestrator.js Show resolved Hide resolved
@aprendendofelipe
Copy link
Collaborator Author

Eu achei isso demais! Organizou bastante coisa e pode ser muito útil para mantermos um padrão entre os projetos "dos mesmos criadores" (curso.dev, TabNews e possíveis projetos futuros).

Eu já deixei bastante flexível para ser útil para testar quaisquer mudanças no TabNews, mas, como bônus, a flexibilidade permite ser útil não só pra gente. E quanto mais útil for para outros projetos, mais contribuições e melhorias teremos.

Como o curso.dev surgiu a partir do TabNews, separar as configurações faz total sentido, porque pode facilitar mantê-los a par nesse ponto, mas não sei se esse é o caminho certo para tornar o TabNews um white label. E eu digo que não sei porque realmente não sei como é um "código amigável para white label".

Essa proposta de separar as configurações faz parte desse objetivo de tornar o TabNews em white label? Se sim, pode me ajudar a entender a visão geral de como esse processo se dará?

Acho que são coisas diferentes. Uma trata da configuração do ambiente de desenvolvimento e a outra é sobre ter um produto final muito parecido.

Mesmo se compartilhasse código de produção, ainda seriam coisas diferentes. Por exemplo, acho que faz sentido separar a UI do TabNews em uma biblioteca. E deixando ela flexível para usar no TabNews e no curso.dev já abre possibilidades de outras pessoas usarem em seus projetos, mesmo que o produto não seja semelhante ao TabNews, mas apenas com parte do design em comum, ou alguém que usa o Primer, mas sente falta das mesmas coisas que a gente.

E o Primer é um bom exemplo. É desenvolvido pensando apenas no GitHub, mas acaba sendo muito útil para diversos projetos.

Porque, atualmente, o que consigo avaliar aqui é "Se eu criar um projeto agora, quero adicionar o @tabnews/config e ter todas essas configurações no meu projeto?"

E, a resposta para a minha pergunta seria "dificilmente". São muitas configurações diferentes para fazer sentido ter um projeto com as mesmas tecnologias: Prettier, ESLint, Vitest, Next, React, Docker, Mailcatcher, PostgreSQL, linter de commit etc.

Acho que pode avaliar apenas se precisa de Prettier, ESLint, Vitest, Next e Docker, e se tirar um ou dois desses itens, ainda pode compensar, mas é algo que deve ser avaliado caso a caso e, por enquanto, a intenção é ser útil pro curso.dev e pro TabNews.

@Rafatcb
Copy link
Collaborator

Rafatcb commented Aug 21, 2024

Uma trata da configuração do ambiente de desenvolvimento e a outra é sobre ter um produto final muito parecido.

Hm, acho que entendi. É claro, faz sentido.

Por exemplo, acho que faz sentido separar a UI do TabNews em uma biblioteca.

Isso pode ajudar, mesmo. Imagino que obter as strings de um arquivo separado acabe sendo um passo seguinte.

Acho que pode avaliar apenas se precisa de Prettier, ESLint, Vitest, Next e Docker

É verdade. Eu não havia percebido a possibilidade de passar arquivos para sobrescrever algumas coisas, como o compose.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
em discussão Em discussão para definir se isso será implementado ou não
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants