-
Notifications
You must be signed in to change notification settings - Fork 398
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
base: main
Are you sure you want to change the base?
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
There was a problem hiding this 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.
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.
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.
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. |
Hm, acho que entendi. É claro, faz sentido.
Isso pode ajudar, mesmo. Imagino que obter as strings de um arquivo separado acabe sendo um passo seguinte.
É verdade. Eu não havia percebido a possibilidade de passar arquivos para sobrescrever algumas coisas, como o |
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:
Depois irei organizar melhor o PR, criando diferentes commits, e também vou tornar público o repositório da biblioteca @tabnews/config 🤝