Executando verificação de segurança...
12

Pitch: TabStats, um site para ver informações de usuários do TabNews 📊

Eu sei que vocês podem estar cansados de tanto "pitch", mas hoje eu vim aqui mostrar um projeto, que até certo ponto, é útil aos usuários do TabNews. 😁

TabStats

O que é o TabStats?

O TabStats é um site open-source que pode ser usado para obter as seguintes informações de usuários do TabNews:

  • Saldo de TabCoins
  • Saldo de TabCashs
  • Permissões
  • Data de criação da conta
  • Última edição do perfil

Por enquanto são só essas informações, porém eu pretendo adicionar mais, como quantidade de publicações (tanto root quanto child), apresentar gráfico de atividade e talvez outras.

O layout, cores e fontes do site foram inspirados e feitos para lembrar o TabNews, já que é um site para os usuários do mesmo. 👍

Você pode acessar o site em https://tabstats.ga

Tecnologias usadas

No início eu estava fazendo o site com Next.js, mas eu estava encontrando algumas dificuldades e decidi fazer com HTML, CSS e JS mesmo, até porque eu não vi real necessidade de usar Next. (Sou iniciante com desenvolvimento web)

Além disso, para obter as informações, eu utilizei a API do TabNews.

O site está hospedado na Netlify e o domínio foi obtido gratuitamente no Freenom. Nesse post eu ensino como conseguir o domínio gratuito.

Screenshots

Contribuições

O projeto ainda está em estágio inicial, mas qualquer contribuição será muito bem-vinda. Mais detalhes sobre contribuição estão disponíveis no README do Repositório do Projeto no GitHub.

Conclusão

Talvez, no futuro, o site deixe de ser útil porque as informações podem ser exibidas no perfil do usuário aqui no TabNews mesmo, mas o projeto é tentar melhorar cada vez mais e apresentar o máximo de informações possíveis até que isso aconteça.

Eu já disse ali em cima, mas vou anotar algumas coisas de novo:

Obrigado se você leu até aqui, lembrando que qualquer feedback é de extrema importância!

Também gostaria de deixar meus últimos agradecimentos ao pessoal da He4rt Developers la do Discord, que me ajudaram a corrigir um bug e foram super atenciosos comigo. 💜

Carregando publicação patrocinada...
3

Interessante, eu achava que TabCoins e TabCash eram dados privados (não cheguei a olhar a API do TabNews).

Seria legal ter algumas dessas informações disponíveis aqui no TabNews futuramente. Do lado do nome do usuário, no perfil dele, tem espaço para colocar os TabCoins e TabCash, por exemplo.


PS: Percebi um bug ao pesquisar um usuário que não existe e depois pesquisar outro que existe:

A estilização do site fica quebrada e a mensagem sobre o usuário não ter sido encontrado não some

2

Já estou ciente desse bug, vou resolver ele já já, obrigado por avisar mesmo assim.

Seria legal ter algumas dessas informações disponíveis aqui no TabNews futuramente. Do lado do nome do usuário, no perfil dele, tem espaço para colocar os TabCoins e TabCash, por exemplo.

Verdade. Tenho certeza que esse é só o início do TabNews, apesar dele já ter mudado bastante desde que foi criado, muitas novas funções ainda vão ser adicionadas, o TabNews sempre vai melhorar.

0
1

Boa Gabriel!

Mas fiquei me perguntando, será que essas informações não deveriam estar restritas pela feature read:user:self?

O que será que a Turma pensa sobre isso?

2

Olha, eu não sei se deveria, mas na minha opinião, seria interessante essas informações ficarem públicas, até pra mostrar aqui no TabNews mesmo.
Acho que o melhor a se fazer é criar uma issue no repositório pra discutir sobre isso.

1

É possível saber quais artigos ainda não foram lidos pelo meu usuário? Se sim, há alguma forma de sinalizá-los, caso essa informação fique armazenada no banco de dados?

Quanto a expor a "carteira de coins", valeria uma consulta a todos usuários (será que é possível criar um post interativo para isso?). Eu acredito que não teria problemas divulgar o total de coins nesse momento, mas poderia ser interessante um sistema de rank.

1

É possível saber quais artigos ainda não foram lidos pelo meu usuário? Se sim, há alguma forma de sinalizá-los, caso essa informação fique armazenada no banco de dados?

Pelo o que eu sei, essa informação fica armazenada no navegador. As publicações lidas ficam com uma cor mais clara do que as não lidas, porém se você apagar o histórico ou mudar de navegador, todas as postagens voltarão a cor normal.

[...] mas poderia ser interessante um sistema de rank.

Essa é uma das idéias de implementação no TabStats, a cada consulta, salvar o username em um banco de dados, e quando a pessoa acessar a página de rank, checar a quantidade de TabCoins e TabCashs de todos os usuários e classificar conforme a quantidade de cada um.

1

Olá, Gabriel! Entendido!

Grato pelo seu esclarecimento. Realmente, há um tempo notei dois tons de cinza na fonte dos títulos das notícias. Bom saber que a informação está armazenada no lado do cliente. PCs diferentes ou janelas anônimas são um probleminha para essa solução.


tl;dr 🥱

🔮 Observação
Parece que cada id que identica uma postagem é composto por um número de 16 bytes.

00000000 3d 0b 8b f5 2f b4 4e f8 85 e3 98 bc 91 2e 64 c5 |=.../.N.......d.|

🕯 Ideia arcaica:
Pode ser ineficiente guardar um vetor para cada usuário com todas ids de cada publicação que abriu (1000 notícias lidas, 16000 bytes consumidos).

Caso pense levar a ideia em diante, pensei num dicionário global com numeração sequencial consumindo apenas 5 bytes como índice. Cada índice se relacionaria à cada id de cada notícia de topo. 5 bytes permite relacionar até 1.099.511.627.776 itens:

---index---- ---------------id-----------------
0x0000000000 0x3d0b8bf52fb44ef885e398bc912e64c5
0x0000000001 0x166da310c678e1ba814ac178b9446923
0x0000000002 0xf3db2efd5f708968dc94ba15f2104bc9
...
0xffffffffff ??

Para cada usuário, seria armazenado um vetor com valores de menor tipo (5 bytes por notícia lida).

---usr_id--- --------------read_news----------------
0x0000000001 0x0000000002,0x0000000003,0x0000000007

👾 Com relação ao fluxo de dados entre cliente servidor, acredito que não haveria problemas incluir esse vetor de informação no pacote de telemetria ( que ja é bem intensa, monitorando por qual link o ponteiro passa!), ou apenas no momento de login e logout (o usuário acostuma a fazer o logout! ou quando expirar a sessão).