Novas melhorias: TabCoins mais consistentes e outras 4 melhorias 🎉
Mais uma semana se passou desde a última publicação sobre as melhorias no TabNews e ao longo desse tempo 5 novas implementações foram feitas!
1) TabCoins mais consistentes
Começando pela mais importante: no passado era possível alguém conseguir creditar em uma publicação mais TabCoins do que a pessoa tinha em saldo e isto foi descoberto por ezequiaslopesdasilva ao fazer alguns testes de stress contra o ambiente de Homologação.
Para exemplificar o comportamento:
- Vamos supor que o
usuário A
possuía2
TabCoins eusuário B
possuía0
TabCoins. - Isso significa que naturalmente o
usuário A
poderia fazer apenas1
qualificação em alguma publicação. - Essa qualificação resultaria na transferência de
2
TabCoins dousuário A
, onde1
TabCoin iria para ousuário B
e1
TabCoin para a publicação dousuário B
.
Mas também era possível mandar múltiplas requisições simultâneas ao ponto de ser possível qualificar, por exemplo, 3 vezes
uma publicação mesmo sem saldo suficiente para fazer isso, deixando nesse caso o usuário A
com -4
TabCoins e o usuário B
com 3
TabCoins.
Nenhuma informação era perdida e todas as operações eram registradas, tanto que o impacto final da operação manchava de forma negativa a conta de quem estava creditando desta forma abusada, mas que de qualquer forma, este não é o comportamento que queremos para o sistema.
Então o aprendendofelipe depois de muita investigação, testes e arrebentando sem pena alguma o servidor de Homologação para dominar o comportamento do sistema sob stress, podemos confirmar que esta brecha foi fechada e não é mais possível fazer movimentações desta natureza. As informações podem ser conferidas por essa Issue* 🎉
2) Nuke de usuário
A comunidade do TabNews está crescendo de uma forma extremamente saudável, sendo que hoje temos 2.655 usuários que ativaram a sua conta, 25 mil visualizações únicas por mês, e apenas 6 contas tiveram seu acesso removido durante os 4 meses que estamos com a interface web no ar.
Mas mesmo que a manutenção sobre remover as contas seja super baixa, isto era um processo que estava sendo feito de forma manual e não contemplava o desfazimento das operações que essa conta tinha feito pelo sistema. Mas agora tudo isso foi automatizado e abstraído em um comando simples na interface chamado Nuke, onde ao ser utilizado irá:
- Remover todas as features do usuário.
- Expirar todas as sessões de todos os devices.
- Despublicar todos os conteúdos publicados.
- Desfazer todas as operações financeiras, por exemplo, irá anular todas as movimentações de TabCoins.
- E por fim, adicionar uma feature
nuked
para marcar que a conta foi banida permanentemente.
Veja abaixo um GIF mostrando a operação em ação, onde um usuário mal intencionado criou comentários para ter crédito suficiente para negativar uma publicação e o que aconteceu após receber um Nuke.
Em resumo, não vamos mais precisar nos preocupar se alguém criar contas para negativar alguma publicação de forma injusta, ou até creditar de forma artificial, pois tudo isso é desfeito no momento que esta conta recebe um Nuke.
Esta implementação foi realizada por mim e as informações podem ser conferidas por essa Issue* 🎉
3) Simplificação do formulário do Cadastro
Antigamente não existia o fluxo de Recuperação de Senha, então se a pessoa digitasse uma senha errada na hora de fazer o cadastro, não era mais possível recuperar a conta. Então para ajudar nisso, adicionamos no cadastro um campo de Repita a Senha.
Mas agora que temos implementado o fluxo de Recuperação de Senha, o atrito causado pelo campo adicional de repetir a senha se torna desnecessário e decidimos removê-lo.
Antes | Depois |
---|---|
Esta implementação foi realizada por kaique-soares e as informações podem ser conferidas por essa Issue* 🎉
4) Check de erro de digitação no Email
Aproveitando que estamos falando de Cadastro, eu roubei uma implementação que fiz pra Newsletter que sugere o email correto caso a pessoa tenha digitado o domínio com algum typo (erro de digitação). A pessoa pode tanto clicar na sugestão, quanto navegar com o teclado (TAB
+ Enter
), que automaticamente o email vai ser ajustado e o foco vai ser colocado no campo Senha para a pessoa continuar o cadastro sem precisar tirar a mão do teclado.
Importante destacar que a Newsletter recebia muitos cadastros com typos tipo gmil
, gmail.coom
, hotmil
, hotmali.com
e eu comecei a pesquisar módulos que faziam a sugestão do ajuste de forma automática. Encontrei vários, mas os resultados não eram precisos... era uma automatização que falhava em casos comuns que estavam aparecendo nos logs da Newsletter.
Então por um bom tempo fiquei monitorando a lista de bounce
da Newsletter e preenchendo um array com as variações dos typos até que por vários dias ela não recebesse nenhum bounce por typo de domínio. Então a lista que construí nesse tempo foi utilizando dados de produção e agora o TabNews se beneficiou disso, o que me deixa pensando se chegou a hora de transformar isso num módulo no npm
.
Esta implementação foi realizada por mim e as informações podem ser conferidas por essa Issue* 🎉
5) Remoção de um await
duplicado no RSS
Um diff
vale mais do que mil palavras:
Esta implementação foi realizada por matheus-caldeira e as informações podem ser conferidas por essa Issue* 🎉
Conclusão
As entregas nessa semana foram extremamente importantes para a maturidade do TabNews e cada vez mais estamos próximos do lançamento da primeira versão 😍
Falando em lançamento, faz 7 dias que comentei isso lá no repositório:
Isso significa que eu tenho esta semana aqui para trabalhar nas últimas tarefas antes de começar a me focar no vídeo de lançamento e eu vou priorizar a Edição de Perfil do Usuário, o que inclui alteração de email.
Isso não significa que as contribuições deverão parar, muito pelo contrário, há algumas coisas fundamentais para o projeto que estão sendo desenvolvidas nesse exato momento, como por exemplo toda uma reformulação do score e relevância para ordenar as publicações da Home que está sendo feito pelo aprendendofelipe e que deverá ocupar o tempo que precisar para ficar tudo 100%.
Então apesar de que eu estou com certas urgências aqui do meu lado, essa pressa é minha e não podemos apressar as features do projeto 👍 mas também é natural de se esperar que a frequência de entregas semanais irá desacelerar e eu prefiro muito mais diminuir a velocidade das entregas do que diminuir a qualidade delas 🤝
O TabNews é um projeto de longo prazo e, como já comentei, não tenho mais dúvidas que seremos o "Blender", mas sobre a criação de conteúdo de tecnologia no Brasil. Seremos um espaço open source que irá por anos e anos sendo melhorado, refinado, lambido, ao ponto de se tornar algo inevitável.
No mais, tenham todos uma excelente semana! Não vejo a hora de voltar com o canal e começar o curso 😍😍😍😍😍
⚠️ O repositório Open Source do TabNews ainda está em Modo Privado. Caso queira receber um convite para participar, leia esta publicação.