Milestone 6 - Performance e Segurança [DRAFT] 🎉
Turma, o início de 2023 irá trazer mudanças significativas para o TabNews, principalmente relacionadas a Performance e Segurança e, por conta disso, desde a semana passada estamos escrevendo o rascunho da próxima Milestone do TabNews 🤝
Então vou trazer para cá alguns pontos importantes, e qualquer comentário ou sugestão sobre o que deva ser feito e o que não pode faltar é super bem vindo, mesmo após a abertura oficial da Milestone 💪
Mas antes de entrarmos de fato no que irá ser executado, gostaria de anunciar algo que irá acelerar bastante o merge
das contribuições:
Felipe Barso irá liderar esta Milestone 😍
O @aprendendofelipe é um dos contribuidores mais ativos do projeto, possui acesso de escrita e deploy, e foi o responsável por levar para produção vários dos últimos Pull Requests que a comunidade fez nas últimas semanas.
Dado a isso, realizei um call com ele semana retrasada onde discutimos alguns pontos do projeto e, de surpresa, fiz o convite para ele liderar esta Milestone e turma, ele aceitou 😍 😍 😍 Eu fico genuinamente feliz com isto, pois assim conseguirei dar mais atenção ao curso que estou desenvolvendo sem precisar parar de fazer vídeos para o canal do YouTube 🤝
No mais, a plataforma do curso e o TabNews compartilham o mesmo core
, então paralelizar estes esforços vai contribuir com o core
dos dois projetos, como já aconteceu, onde foi identificado um bug pela plataforma do curso e foi repassado este ajuste para o TabNews.
Mas o mais importante agora é o objetivo principal da Milestone 6, pois ele vai atacar as maiores dores do TabNews, principalmente as dores relacionadas à manipulação artificial de TabCoins e como lidar melhor com conteúdos sem valor concreto.
Objetivo principal da Milestone 6
Independente de outras implementações que forem feitas dentro desta Milestone (como por exemplo o Dark Mode), o norte dela deverá ser itens relacionados a Performance e Segurança, principalmente para conseguirmos dar o próximo passo que é a Milestone de Revenue Share (e que não podemos fazer ela antes de aprimorarmos algumas proteções no core
do TabNews 🤝)
Então abaixo eu vou destacar as 3 categorias que irão compor esta Milestone, sendo que os itens que já foram executados (e estão em produção) estarão com seu checkbox marcado [x]
. E caso queira mais informações sobre do que se trata cada item, basta clicar em cima dele para ser levado para a issue
oficial lá no repositório do TabNews.
Performance
Estes são os itens que irão melhorar a performance e usabilidade do TabNews e neste ponto há muitas oportunidades, principalmente no backend (como criação de índices no banco de dados).
- Melhora na performance da paginação de conteúdos
- Adiciona índices na query do
findChildrenTree
ebalance_operation
- Melhor performance no processo de
build
(manter conexão aberta nopool
) - Adiciona
stale-while-revalidate
emGET
/api/v1/contents
- Índices no Banco de Dados
- Cache da API: Endpoints de Conteúdo
- Otimização de query:
findChildrenTree()
e similares - Migrar RDS de
sa-east-1
paraus-east-1
(ou outro provider como Supabase)
Segurança
Esta categoria envolve tanto a segurança técnica do sistema quanto a segurança da economia do TabNews.
Na parte técnica, devemos considerar desde, por exemplo, acessos não autorizados, a estabilidade do sistema e gerenciamento de erro. Na parte da economia, devemos considerar mecânicas para evitar abusos das TabCoins e expor o máximo de informação para as pessoas da comunidade conseguirem identificar manipulações, como por exemplo, expor quem deu up/down vote.
- Implementa timeout de 4 segundos no Upstash
- Implementa Cloudflare e ajusta Firewall interno
- Para de retornar o
id
no endpoint/api/v1/recovery
- Melhora os logs de erro
- Recusa conexões que não vierem de www.tabnews.com.br em Produção
- Impede o redirecionamento para URLs externas no ato de Login
- Adiciona meta tag
upgrade-insecure-requests
- Atualizar Termos de Uso (e colocar link no cadastro)
- Catch de erro do SWR
- Publicação ao ser removida, devolve TabCoins de quem negativou
- Limitar a quantidade qualificações (TabCoins) por publicação
- Mostrar quem qualificou uma publicação
- Parar de calcular TabCoins e TabCash na hora de injetar a sessão (e outros lugares)
- Implementar CAPTCHA no Cadastro e Login
- Implementar Two Factor
- Recuperação de senha apenas por
email
- Moderação conseguir anular as TabCoins de um conteúdo
Melhorias
Esta é uma categoria aberta e que deve listar todas as lapidações que o projeto vem recebendo e que não se encaixam na categoria Performance ou Segurança.
- Faz o número de conexões do banco ficar vermelho quando acima de 70% das conexões máximas
- Alinhar logo do TabNews com o texto do footer
- Substituição dos códigos de erro do PostgreSQL por constantes explicativas
- Resolve o bug da mensagem "Conteúdo apagado com sucesso"
- Permitir alterar nome do usuário mudando apenas letras entre maiúsculas e minúsculas e vice-versa
- Remoção de palavra "conta" duplicada nos termos de uso
- Impedir que conteúdos sejam publicados sem texto visível
- Mensagem global para anúncios
- Dark Mode
Conclusão
Observando o projeto pelo ponto de vista de um usuário, o TabNews deve ser um espaço onde você goste de visitar e que não gere ansiedade, frustrações ou desconfianças ao fazer isso, e naturalmente ainda não chegamos neste estágio, mas vamos chegar.
Para entender de verdade que iremos chegar neste estágio, você precisa também entender que o TabNews é um projeto de longo prazo e irá demorar anos para atingir este estágio... e quando falo anos, é anos mesmo.
Dado a isso, sugiro não ficar frustrado mais do que deveria ao encontrar algum problema, como um abuso ou manipulações de TabCoins ou conteúdos sem valor concreto. É uma pena que isso aconteça, mas é o esperado dado a inércia atual das redes sociais, correto? Então com maturidade vamos canalizar esta frustração para programar os mecanismos que irão proteger a economia do TabNews e também vamos deixar comentários educando as pessoas sobre o que estamos tentando proteger nesse novo pedaço de internet que acabamos de abrir.
Eu garanto que, só com estas duas coisas, iremos tranquilamente atingir o estágio de projeto que queremos, da mesma forma que o Blender atingiu o estágio de se tornar o melhor software open source 3D do mundo, ou o Godot no mercado de jogos, ambos depois de anos sendo lapidados. Com isso, o TabNews (ainda mais quando criarmos a versão White Label dele) irá se tornar o melhor software para criação de comunidades auto sustentáveis, inicialmente o melhor software do Brasil e depois do mundo, e se não for o melhor, vai ser pelo menos um dos melhores, ou ainda mais importante, vai ser o melhor software para nós que usamos este espaço como usuários ❤️
No mais, tenham todos ótimas festas de final de ano e estou positivamente ansioso por 2023
!!! 🎉 🤝 👍 💪
Filipe