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

RFC: Marcos históricos do projeto (Milestones) #17

Closed
filipedeschamps opened this issue Jun 8, 2021 · 32 comments
Closed

RFC: Marcos históricos do projeto (Milestones) #17

filipedeschamps opened this issue Jun 8, 2021 · 32 comments

Comments

@filipedeschamps
Copy link
Owner

filipedeschamps commented Jun 8, 2021

Pessoal, fiz um rascunho das Milestones (Marcos Históricos) do TabNews para cadastrar aqui no Github e começar a organizar as issues. Com isso vamos ter uma noção de progresso do projeto e nada disso está escrito em pedra, inclusive preciso de muita ajuda, pois faz tempo que não organizo um projeto dessa natureza. E com certeza quanto mais avançarmos nas tarefas, mais são reveladas e mais precisão vamos tendo ao longo do caminho.

Mas por enquanto, o jeito que organizei foi MPVs funcionais, onde de pouco em pouco vamos comemorando as conquistas e chegando nas features extras e algumas delas não precisam ser executadas nessa ordem que eu coloquei (principalmente as que estão na Milestone 6, podem ser antecipadas sem problemas 👍 )

Milestone 0: Em construção

  • Merge ou Close dos PRs sobre POCs ainda em aberto
  • Home clássica "em construção" com foto de todo mundo que quiser aparecer nesse momento histórico do projeto 😍
  • Colocar em produção no domínio tabnews.com.br

Milestone 1: Fundação

  • Manutenção das issues (quais fechar?)
  • Tipo da Licença
  • Falar sobre Arquitetura e definir padrão de pastas
  • Definir padrão de commits/linter
  • Definir padrão de code style/linter/code formatter
  • Conexão com banco de dados
  • Migration
  • Rodar testes local e CI

Milestone 2: Auth e Usuários

  • Separar entradas do Diário em arquivos isolados
  • Atualizar README com instruções sobre como instalar, rodar ou testar o projeto (incluindo usando act)
  • Avaliar transformar o Database em um Singleton para reutilização do Pool
  • Criar um .prettierrc
  • Remover do package.json o "test:ci" e mover para Action
  • Definir quem será o "Guia de Acessibilidade"
  • Padrão nos controllers usando next-connect
  • Padrão de retorno das APIs (Dados e Erros)
  • Sistema de Autenticação
  • Sistema de Autorização (ACL)
  • CRUD de Usuários

Milestone 3: Notícias e Comentários

  • CRUD de Notícias
  • Lógica de ordenação das Notícias V1: pela mais recente (e mais nada)
  • CRUD de Comentários e sub-comentários
  • Página de Status mostrando todos os números do projeto

Milestone 4: TabCoins

  • Sistema de TabCoins
  • Sistema de Auditoria
  • Lógica de ordenação das Notícias V2: (TabCoins - Tempo de Publicação)

Milestone 5: XP (ou outro modelo)

  • Sistema de XP

Milestone 6: Revenue Share

  • Sistema de Revenue Share

Milestone 7: Recursos Cereja do Bolo

Considerações

  • Tudo pode mudar (e vai mudar 😂 )
  • Itens podem ser antecipados, por exemplo os que estão na Milestone 6
@wcarugatti
Copy link

Pô, uma livezinha só de pontapé inicial cairia bem pra discutir o Milestone 0, definir arquitetura, quais libs usar e etc. O que acha @filipedeschamps ?

Porque tem muita coisa pra discutir/decidir como: Qual vai ser a estrutura/modelagem do banco? o back vai ser só o nextjs na vercel + o banco de dados ou vai ter um/varios servidores nodejs? Vai usar cloud pra alguma coisa? Já cogitou serverless? O auth vai usar JWT ou Oauth2? Entre outras perguntas que eu me faço.

@SysDaemon
Copy link

SysDaemon commented Jun 9, 2021

Concordo.
Talvez um brainstorm para definirmos o back e estrutura do projeto.
É com um prazer enorme que vou participar de um projeto como esse.
Ultimamente, estou estudando spring boot para back, mas sou suspeito de falar.
Vamos que vamos pessoal. Estou muito crente que todos nós gostaríamos de ver esse projeto sendo o maior portal de notícias de tecnologia do Brasil.
Estou MUITO empolgado.

Edit1: Como eu estou DBA (SQL Server), e desenvolvedor em BD no momento, creio que serei útil na parte dos desenvolvimento das queries e/ou no banco em si.

@filipedeschamps
Copy link
Owner Author

Show @wcarugatti eu topo live sim! Tinha até comentado que seria legal fazer lives, quem sabe nessa sexta? Em paralelo tava pensando aqui, uma coisa que lives podem atrapalhar é que nem sempre vai casar com a agenda de todo mundo, será a mesma dificuldade de marcar uma reunião com muita gente e isso com certeza vai trancar um pouco o progresso do projeto.

Então talvez o ideal seria conseguir ir resolvendo e propondo as coisas aqui pelo Github mesmo, de forma assíncrona, acompanhando o projeto, do que depender de lives. Talvez uma live seria legal para explicar o que foi decidido, ou quase decidido.

E no diário que está no README do projeto e também nesse vídeo dos membros eu dou uma pincelada nas prováveis tecnologias 👍

@filipedeschamps
Copy link
Owner Author

Edit1: Como eu estou DBA (SQL Server), e desenvolvedor em BD no momento, creio que serei útil na parte dos desenvolvimento das queries e/ou no banco em si.

@SysDaemon que show!!! Vai ser de grande ajuda com certeza 😍

@filipedeschamps filipedeschamps mentioned this issue Jun 9, 2021
9 tasks
@wcarugatti
Copy link

@filipedeschamps concordo 100% que não da pra depender de live, mas uma só pra dar esse empurrão inicial seria interessante, to vendo eu e uma galera levemente perdidos em como contribuir por conta dessas questões que eu citei anteriormente.

Acredito que seja esse o motivo pelo qual o milestone 6 está cheio de ideias da galera que foram surgindo nas issues que são ótimas porém tangenciam um pouco o core do projeto indo um pouco na direção oposta ao kiss eu diria.

(Novamente, são ideias ótimas, porém justamente para uma fase 6 do projeto)

@rodrigoKulb
Copy link
Contributor

@filipedeschamps você acha que vale acrescentar no Milestone 1: Auth, Usuários e Notícias

  • CRUD de Notícias
  • a) Lógica sobre a ordenação das Notícias ?

@filipedeschamps
Copy link
Owner Author

filipedeschamps commented Jun 9, 2021

@wcarugatti show, vamos fazer uma live sim 😍 bora então fazer nessa sexta 🤝

@filipedeschamps você acha que vale acrescentar no Milestone 1: Auth, Usuários e Notícias

  • CRUD de Notícias
  • a) Lógica sobre a ordenação das Notícias ?

E @rodrigoKulb total! Vejo que na verdade vamos precisar fazer duas versões dessa lógica:

  • V1: Ordenar pela mais recente (e mais nada)
  • V2: Com as TabCoins implementadas na Milestone 3, fazer a versão final

O que acha?

@brunofamiliar
Copy link
Contributor

@filipedeschamps , acha que num seria interessante ter um botão para que a comunidade doe recursos financeiros para o site? Acredito que, se o projeto agregar valor para seus usuários, concerteza seria uma forma de garantir um renda passiva para a manutenção da plataforma.

@rodrigoKulb
Copy link
Contributor

rodrigoKulb commented Jun 10, 2021

@filipedeschamps , acha que num seria interessante ter um botão para que a comunidade doe recursos financeiros...

@brunofamiliar nunca foi muito fan do botão doação, vemos o exemplo do wikipedia sempre precisando de recursos para não sair do ar. Ainda acredito que o ideal seria abrir um espaço exclusivo para publicidade paga, com certeza teriam grandes empresas querendo colocar sua marca lá! Mas ai é com o @filipedeschamps haha!

@filipedeschamps
Copy link
Owner Author

@rodrigoKulb inseri nas milestones a V1 e V2 do algoritmo de ordenação de notícias 🤝 e a gente pode obviamente ir criando outros algoritmos conforme o comportamento do ecossistema.

E aproveitei para separar a Milestone 0 em duas, pois eu realmente acredito que cada milestone deve ser uma comemoração. A gente devia inclusive comemorar em live cada conclusão de milestone, e colocando a última feature em produção e marcando a issue em questão como Done, na live digo. Seria bem emocionante 😂

@filipedeschamps
Copy link
Owner Author

@brunofamiliar show! Se você analisar, isso está acontecendo pelo 👑 Membros de forma indireta, correto? 😂 👍 e sobre se sustentar, do meu lado eu aposto naquela parte residual dos anúncios, porque a maioria deles deve precisar sustentar quem cria conteúdo com valor concreto (seja por notícias ou comentários). E esta última parte que falei é a mais importante, por isso que no começo nem eu, nem o @GustavoDeschamps , vamos estar acima do sistema, vamos participar normalmente do revenue share como todo mundo, e somente quando isso funcionar pra todo mundo que a gente pensa no modelo residual, por exemplo 20% da probabilidade de aparecer algo que a gente escolher, e os 80% são da comunidade.

Não tem como inverter essa ordem e eu ficaria MUITO feliz em criar um ecossistema para criadores/participante brasileiros conseguirem colocar seus próprios anúncios, seja de cursos afiliados, seus projetinhos, repositórios no github, seu currículo, etc. Daria um tom realmente muito especial ao site todo ver que os anúncios são nossos e não de empresas (não que elas não possam participar, elas podem se finalizarem o fluxo de contribuição).

E @rodrigoKulb eu tenho certeza absoluta que tem grandes empresas que iriam anunciar, inclusive eu já tenho em queue empresas que me deram um cheque em branco pra participar de qualquer projeto que eu fizer, mas isso não me deixa mais feliz. Sabe o que realmente me deixa feliz? Ver a turma gerando conteúdo com valor concreto e sendo valorizada por isso. Isso é infinitamente muito mais massa na minha cabeça. É muito mais difícil, e é por isso que é muito mais massa.

Agora, como falei num dos vídeos do canal, eu sim me preocupo na viabilidade financeira das coisas e se patrocínio for a única forma, eu entendo. Não quero banir empresas, ainda mais se encontrarmos um modelo não tradicional e que beneficie o ecossistema, mas que vai ser zero o foco agora... agora o foco é na gente dar certo 🤝

@rodrigoKulb
Copy link
Contributor

@filipedeschamps sim com certeza! O único "custo real" do projeto, seria a infra não faço ideia de custo necessário para um projeto corporativo desse porte na Vercel. Esse realmente seria um investimento necessário quando chegar no limite do tráfico gratuito. Ou procurar algum parceiro de infra.

@filipedeschamps
Copy link
Owner Author

@rodrigoKulb show! Eu especulo que o maior custo vai ser DB, uma vez que um dos princípios que quero adotar para o tabnews é ele ser 99% static pages.

@brunofamiliar
Copy link
Contributor

Aaata, perfeito! Sugeri essa forma apenas como uma alternativa de captar recursos para a plataforma, ou até para projetos futuros, sem comprometer 100% outras fontes. Poderia ser até interessante usar essas doações como forma de promover uma competição saudável na rede e incentivar os principais produtores de conteúdo kk. Mas entendo que hoje o próposito tabnews não é seguir por essa linha 😉

@filipedeschamps
Copy link
Owner Author

Show! E lendo sua mensagem de fato daria para fazer algo legal com algum parceiro, fazer algo diferente e conseguir distribuir isso pelos pesos do Revenue Share 👍

@tiagovilasboas
Copy link

tiagovilasboas commented Jun 12, 2021

@filipedeschamps primeiramente muito obrigado por permitir minha participação nesse projeto (acabo de chegar), lendo a conversa acima de vocês sobre os anúncios eu tenho uma dica que gostaria de complementar ao projeto:

  • Se tratando de anúncios, acredito que podemos considerar depois do lançamento do mvp, o uso de alguma ferramenta para coletarmos métricas do site, pois com as métricas necessárias podemos executar testes A/B para melhorarmos a rentabilidade e conversão dos anúncios e até da experiência do usuário. Comento isso porque tenho cases de sucesso sobre isso no meu projeto atual e gostaria de colaborar com minha experiência aqui também. ;) O que você acha?

@francopan
Copy link

francopan commented Jun 12, 2021

@filipedeschamps primeiramente muito obrigado por permitir minha participação nesse projeto (acabo de chegar), lendo a conversa acima de vocês sobre os anúncios eu tenho uma dica que gostaria de complementar ao projeto:

  • Se tratando de anúncios, acredito que podemos considerar depois do lançamento do mvp, o uso de alguma ferramenta para coletarmos métricas do site, pois com as métricas necessárias podemos executar testes A/B para melhorarmos a rentabilidade e conversão dos anúncios e até da experiência do usuário. Comento isso porque tenho cases de sucesso sobre isso no meu projeto atual e gostaria de colaborar com minha experiência aqui também. ;) O que você acha?

@tiagovilasboas Agora faço uma provocação...precisa mesmo? Considerando a proposta do site e o modelo adotado?
A web está se tornando um lugar hostil para os usuários com pixels de rastreamento, cookies, fingerprinting,... Será que por o site dizer que o foco está no usuário não seria interessante que seu comportamento demonstre isso, evitando o uso de rastreadores sempre que possível?

@filipedeschamps
Copy link
Owner Author

Se tratando de anúncios, acredito que podemos considerar depois do lançamento do mvp, o uso de alguma ferramenta para coletarmos métricas do site, pois com as métricas necessárias podemos executar testes A/B para melhorarmos a rentabilidade e conversão dos anúncios e até da experiência do usuário. Comento isso porque tenho cases de sucesso sobre isso no meu projeto atual e gostaria de colaborar com minha experiência aqui também. ;) O que você acha?

@tiagovilasboas eu acho uma ideia excelente fazer testes A/B para entender o que funciona melhor, e muito obrigado a se disponibilizar a ajudar nisso. Avançando mais no projeto, iremos saber como encaixar isso nas milestones. E um detalhe importante é que eu pessoalmente não gosto é quando acaba sendo feito o tracking individual dos usuários, ou é enviado esses tipos de dados para plataformas terceiras. Uma coisa que esse site não pode ter é aqueles banners de cookies terceiros 👍 como podemos fazer isso?

@tiagovilasboas Agora faço uma provocação...precisa mesmo? Considerando a proposta do site e o modelo adotado?
A web está se tornando um lugar hostil para os usuários com pixels de rastreamento, cookies, fingerprinting,... Será que por o site dizer que o foco está no usuário não seria interessante que seu comportamento demonstre isso, evitando o uso de rastreadores sempre que possível?

@francopan excelente provocação e concordo com ela, tanto que destaquei minhas preocupações acima. Então reforço aqui: eu gosto da ideia de entender o que funciona melhor, e não gosto da ideia de rastreamento individual e cookies terceiros.

Essa solução aqui parece ser interessante: https://umami.is/

@brunofamiliar
Copy link
Contributor

@filipedeschamps só para contribuir com esse tema de analytics, hoje uso um sistema open source para alguns serviços meus, é válido também para esse contexto https://matomo.org/

@huogerac
Copy link

huogerac commented Jul 8, 2021

Oi pessoal,
Pensando na próxima milestone - 1 Fundação , oq voces acham de discutir os assuntos através destas issues aqui:

@filipedeschamps
Copy link
Owner Author

@huogerac muito obrigado pela ajuda, matou a pau e já deixou essa parte pronta para Live amanhã 😍

Em paralelo, adicionei dois novos itens ali no topo que são importantes:

  • Manutenção das issues (quais fechar?)
    Isso para não perdermos controle sobre a quantidade de issue aberta.

  • Tipo da Licença
    Depois da bagunça causada pelo Github Copilot, vamos entender se estamos com a licença certa.

Vou criar essas issues e atrelar à milestone também 👍

@filipedeschamps
Copy link
Owner Author

Essa semana me veio uma ideia que acho importante puxarmos cedo no projeto, que é uma página pública mostrando todos os números do site, e isso engloba a quantidade de views, usuários cadastrados, conteúdos criados, comentários, contribuições e também o status do serviço ou qualquer outra métrica que seja interessante acompanharmos.

Isso vai ser extremamente importante para visualizarmos o progresso concreto do projeto, ainda mais se conseguirmos plotar um gráfico histórico. Então alterei a Milestone 3 para isso:

Milestone 3: Comentários e Status

  • CRUD de Comentários e sub-comentários
  • Página de Status mostrando todos os números do projeto

Garanto que vai ser bastante animador para todos acompanharmos essas métricas evoluindo ao longo do tempo e ao longo das implementações que iremos fazendo 👍

@filipedeschamps
Copy link
Owner Author

Como reflexo da issue #43, eu editei a Milestone 2 para definirmos um Guia no assunto acessibilidade, ficou assim:

Milestone 2: Auth, Usuários e Notícias

  • Definir quem será o "Guia de Acessibilidade"

O timing desse assunto nessa Milestone em questão é ótimo, pois vai ser a primeira vez que iremos devolver conteúdos com valor concreto para internet 👍

@filipedeschamps
Copy link
Owner Author

Adicionei na Milestone 2 o seguinte item:

Milestone 2: Auth, Usuários e Notícias

  • Padrão de retorno das APIs (Dados e Erros)

@huogerac
Copy link

huogerac commented Aug 6, 2021

Fala pessoal,

Pensando na Milestone 2, o que voces acham se a gente tentar alguns dos itens abaixo? isto se fizer sentido para aumentar ainda mais a colaboraçao:

  • Criar labels para as Issues (talvez seguindo o mesmo padrao de commits do cz), desta forma, sabemos se a issue é uma nova funcionalidade, melhoria, bugfix, documentacao, UX, RFC, débito técnico
  • Tentar criar Issues mais atômicas, ou seja, tentar dividir as tarefas em unidades um pouco menores de trabalho.Desta forma, alem de contribuir para ajudar na descricao da tarefa (oq muita vezes nao é facil), pode tambem ajudar a ter mais pessoas contribuindo na tarefa macro, ou seja, enquanto uma pessoa faz o cadastro, outra faz o atualizar em um 'CRUD'.
  • Usar a ordenação nas issues para indicar prioridade, ao filtrar por milestones, o GH permite mudar a ordem das issues, isto pode ajudar a deixar mais explicíto as tarefas que podem ser executadas primeiro
  • Adicionar o que faz a issue ser concluída (DONE), talvez ao tentar descrever oq precisa ser feito para concluir a tarefa, podemos chegar na conclusao que tem muita coisa dentro de uma única issue, oq pode ajudar a quebrar em tarefas menores (item 2), ou as vezes o inverso acontece, uma descricao destes pontos ajuda a tornar mais proximo do codigo, em outras palavras, as vezes só titulo pode parecer que é mais difícil de fazer que parece...

@filipedeschamps
Copy link
Owner Author

Sensacionaaaaal @huogerac !!!

  1. Labels: interessantíssimo, talvez a gente poderia separar pelo interesse das pessoas em frontend, backend ou infra de início. Pois daí a pessoa pode filtrar pelo o que ela tem mais experiência, o que acha?
  2. Issues atômicas: perfeito! Nessa Milestone ainda mais do que nunca é preciso fazer isso de fato 👍
  3. Ordenação nas issues: nossa eu não sabia disso, vou investigar e fazer, que show!!! 👍
  4. Done: sensacional, vou fazer!!!! 😍

@huogerac
Copy link

Legal @filipedeschamps

Dai seguindo esta linha das Issues na Milestone 2, queria ver o que voces acham se fosse possivel criar tarefas seguindo um caso de uso que gere valor para o negócio (imagine que o cliente quer ver algo), exemplo:

"Como membro, eu gostaria de poder cadastrar uma Notícia (mesmo que via POST na API diretamente) e assim qualquer visitante consiga vê-la na página do tabnews (listagem ordenada por mais recentes)".

Se a gente conseguisse listar todas tarefas para concluir este caso de uso, talvez na primeira versão, totalmente sem controle de permissão, olha quanta discussão saudável poderia surgir, desde detalhes da página da listagem, qual poc vai ser utilizado, detalhes de usuabilidade/acessibilidade até campos da API e do model.
Dúvidas de negócio, por exemplo, um usuário vai poder apagar uma notícia? alterá-la?

Sem falar que poderiamos ter contribuições de frontend e backend ao mesmo tempo.
Imagina que com varios membros criando Tabnews, podemos identificar que API deveria ter paginação ou sei lá que pode surgir...

Paralelo a isto, daria para ir tocando a parte de autenticação/autorização que envolve mais pesquisa. E quando tudo estiver rodando mais "seguro", dai podemos limpar a base e iniciar novamente

@filipedeschamps
Copy link
Owner Author

Interessantíssimo @huogerac eu sou péssimo com essas descrições, mas vou aproveitar para treinar 😂

Então vou juntar esse tipo de descrição, com a sugestão das issues atômicas, pois daí eu quero tentar colocar elas numa ordem de dependência. E adorei sua sugestão de primeiro fazer a API sem precisar de credencial, pois isso gera dados para o frontend poder trabalhar melhor 🤝

@sr2ds
Copy link

sr2ds commented May 6, 2022

@filipedeschamps já temos em algum lugar um TODO LIST?
Se tivermos um todo list com as features que já estão na sua cabeça e algum resumo de como você está pensando, podemos contribuir programando no ritmo das suas idéias. Algo como o trello ou até um kanban aqui mesmo.

@filipedeschamps
Copy link
Owner Author

Fala @sr2ds ! O controle está sendo feito através das Milestones, olha só:

Milestones que já foram completadas (abra cada uma para ver as issues): https://github.com/filipedeschamps/tabnews.com.br/milestones?direction=asc&sort=title&state=closed

Milestones que ainda não foram detalhadas nem abertas: https://github.com/filipedeschamps/tabnews.com.br/milestones?direction=asc&sort=title&state=open

@rodrigoKulb
Copy link
Contributor

@filipedeschamps bom dia! Esse escopo está 100% atualizado?

@filipedeschamps
Copy link
Owner Author

0% atualizado 😂 vou fechar a issue por enquanto, pois estamos sempre fazendo uma versão mais atualizada no draft da milestone que está rodando de fato 🤝

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants