Como o TabNews Armazena as Postagens?

Alguém tem algum norte de como o tabNews armazena suas postagens e indexa tudo pro usuário? Não tenho muita experiência com esse tipo de projeto, mas inicialmente me lembra bastante o reddit.

Fiquei teorizando se eles armazenavam tudo em arquivos estilo JSON - principalmente pq o dchamps falou que a plataforma foi desenvolvida encima de uma API Publica -

Algo nesse estilo:

  1. O usuário escreve todo o seu POST

  2. Ao enviar, o site salva diretamente na API com as informações do post: conteudo,nome usuario, etc.

  3. A partir desse ponto todas as outras páginas apenas trabalham com esses dados da API: Mais recentes, Mais relevantes. Ou até mesmo a página da postagem em si

Não sei se faz muito sentido. Mas essa foi minha teoria hshahahsa :

Tentando simplificar ao máximo, ja que disse não ter muito conhecimento com esse tipo de projeto...

Salva em um banco de dados (Postgres), em uma tabela content. Tanto a publicação quanto o comentario, em registros separados.

Podemos então chamar os dois de content.

Quando você faz um post novo voce cria um content e cada content tem um id.

Quando voce comenta em alguma postagem, voce também está criando um content, porém esse tem uma informação a mais, o parent_id, que se refere a outro content.

Então na pagina inicial é listada todos os content que não tem um parent_id, ja que contents sem um "pai" são independentes, então a lógica considera que é conteudo principal de uma árvore de conteúdos. E pra trazer o resto da árvore, dentro da pagina do post é listado todos os content em que o parent_id seja igual ao id da postagem que voce entrou.

O JSON é gerado apartir do resultado dessa consulta do banco.

Curiosidade:

Voce pode acessar o JSON colocando /api/v1/contents/ na frente da url do site.

Ex. Seu post: https://www.tabnews.com.br/api/v1/contents/gr4y/como-o-tabnews-armazena-as-postagens

Os comentários do seu post: https://www.tabnews.com.br/api/v1/contents/gr4y/como-o-tabnews-armazena-as-postagens/children

Não cheguei a ver, mas imagino que seja estutura JSON mesmo. Também imagino que tenha a propriedade "comments", que seria um array de objetos, cada objeto seria o comentário de um usuário, onde dentro desse objeto novamente teria o "comments" que seria a resposta de um comentário.

Eu não sei se ele chegou a alterar isso, mas ele fez um video no shorts do YT uma vez dizendo que a referência entre os comentários estava no filho, todas as postagens possuem um campo pra guardar as postagens pai e as postagens que não são comentários, deixam esse campo em branco Assim daria pra manter todas as publicações uma referência própria, o problema acaba sendo pra puxar os comentários que acaba tendo de ser uma busca recursiva, o que acaba gastando muito recurso com requisições muito pesadas O TabNews inclusive tava com problema de recurso, não sei se foi exatamente com relação a isso e nem sei muito bem como foi resolvido (ainda sou novato), mas uma solução temporária foi remover a contagem de comentários na lista de postagens (o que leva a imaginar que essa recursividade realmente estava dando problemas)
Armazenar dados em JSON não é muito utilizado na maioria das vezes. Devido ao fato de banco de dados serem mais eficientes em guardar informação, e mais simples realizar uma consulta em banco de dados, e com os dados dessa consulta gerar um JSON e retornar para onde precisa. Assim vc consegue uma manipulação melhor de dados. Imaginem o tamanho do json de uma aplicação como essa. é mais facil cada aplicação ter o seu registro proprio, e após isso is buscando na base de dados somente os dados que precisam ser retornados, isso inclui outros dados de outras postagens
Entendi. Um cara comentou [aqui](https://www.tabnews.com.br/enzogfdd/ea444bf7-a45e-4e1f-83ea-95febfc360d4) dizendo como ele acha que funciona. Tenho que arranjar um tempo para dar uma olhada no código fonte depois. Fiquei realmente curioso e quero contribuir com esse projeto.

o tabnews armazena as postagens no banco de dados (postgres)