Usando o Discourse para criar um blog, Reddit, X ou plataforma de rolagem estilo Facebook

Estou criando este tópico para documentar minha jornada enquanto tento transformar o Discourse em uma plataforma mais visual, com rolagem contínua — algo mais próximo da experiência de navegação oferecida por Reddit, X e Facebook.

Usarei este tópico para compartilhar o que estou tentando, o que funciona, o que não funciona, os componentes que estou usando e quaisquer problemas que encontrar. Espero que também ajude qualquer outra pessoa interessada em usar o Discourse para algo além de um layout de fórum tradicional.

O ponto de partida para este projeto foi a regra 90–9–1.

Ela sugere que, na maioria das redes sociais, blogs, etc.:

  • 90% dos usuários navegam e consomem conteúdo principalmente.

  • 9% ocasionalmente reagem, curtem, compartilham ou comentam.

  • 1% criam ativamente a maior parte do conteúdo.

Obviamente, os percentuais exatos variarão entre comunidades, mas o princípio permanece relevante: a maioria dos visitantes são leitores, não contribuidores.

O Discourse é excelente em atender aos 9% e aos 1%. Ele é construído em torno de discussões, respostas e participação ativa. No entanto, quero torná-lo igualmente atraente para o grupo muito maior que simplesmente quer abrir o site e navegar por conteúdo fresco e interessante.

O que estou tentando construir

Quero usar o Discourse para criar um feed mais visual e contínuo (doom scrolling), semelhante ao do Reddit, X ou Facebook.

A experiência idealmente se pareceria com algo assim:

  • Abrir a página inicial e ver imediatamente um feed de tópicos relevantes.

  • Rolar continuamente de um tópico para o próximo.

  • Visualizar o conteúdo do tópico sem abrir uma página separada.

  • Ver imagens, vídeos e trechos diretamente no feed.

  • Curtir, marcar como favorito ou responder quando algo chamar sua atenção.

  • Mover automaticamente o conteúdo já rolado para fora do caminho.

  • Voltar mais tarde e ver tópicos novos ou não vistos, em vez da mesma página inicial toda vez.

  • Personalizar gradualmente o feed usando categorias, tags e tópicos com os quais o usuário interage.

Algumas pessoas podem chamar isso de “doom scrolling”, mas é também simplesmente a forma como um número enorme de pessoas consome conteúdo online hoje em dia. Elas podem ler dezenas de publicações sem nunca comentar, mas ainda assim são usuários genuínos que geram visualizações, compartilham links e potencialmente retornam todos os dias.

Por que construir com o Discourse?

O Discourse já fornece a maioria das partes difíceis:

  • Contas e perfis de usuários

  • Categorias e tags

  • Curtidas, favoritos e notificações

  • Níveis de confiança e moderação

  • Criação de tópicos e respostas

  • Rastreamento de lido e não lido

  • Tópicos sugeridos e relacionados

  • Um sistema maduro de plugins e componentes de tema

O que parece faltar é um feed projetado principalmente em torno de descoberta e consumo passivo. (obviamente, o Discourse não foi projetado para ser assim)

Onde estou até agora

  1. Comecei com o incrível tema Redditish do @awesomerobot, que tive que fazer um fork para poder editar vários aspectos, como a remoção da barra lateral personalizada. Também editei bastante o CSS para projetá-lo do jeito que queríamos.
  2. Habilitar as Visões Aninhadas foi essencial, pois isso cobre o estilo necessário para esse tipo de site.
  3. Criei e adicionei um menu rolável no estilo YouTube que mostra todas as categorias e links personalizados. Usei Links Personalizados de Navegação Superior para personalizar e adicionar links.
  4. Um modal de pré-visualização de tópico era essencial e comecei a projetar isso, mas a lenda @Don construiu uma versão melhor, que pode ser encontrada aqui
  5. Uma barra lateral direita em cache estática em todos os lugares era essencial, então comecei com blocos de barra lateral direita e depois criei um componente de tema para exibi-lo nos tópicos, etc.
  6. Usando links de cabeçalho personalizados (ícones), adicionei um “Criar uma Publicação” no cabeçalho para tornar o container mais limpo.
  7. Imagens em publicações centralizadas com um fundo desfocado para ficar mais arrumado (semelhante ao Reddit)
  8. Definir trechos de tópicos para 150 caracteres e exibi-los entre o título e a imagem nos cartões de tópico era essencial (semelhante ao Facebook e X)

Os próximos passos seriam um feed dedicado que poderia:

  1. Começar com conteúdo recente de um período definido, como os últimos 14 dias.

  2. Priorizar tópicos de categorias e tags que o usuário segue.

  3. Misturar tópicos populares ou em alta para descoberta.

  4. Registrar quando um tópico foi genuinamente visualizado ou rolado.

  5. Reduzir a prioridade de tópicos visualizados sem ocultá-los permanentemente.

  6. Permitir reações e respostas diretas a partir do feed.

Isso não substituiria as listas de tópicos tradicionais ou discussões. Seria uma maneira adicional de descobrir e consumir o mesmo conteúdo do Discourse.

Siga a jornada

Continuarei atualizando este tópico à medida que o projeto evoluir, incluindo os componentes que testo, as mudanças que faço e os obstáculos com que me deparo.

Também ficaria interessado em ouvir de qualquer pessoa que tenha tentado algo semelhante, especialmente em relação a:

  • Se os dados existentes de rastreamento de leitura poderiam suportar isso.

  • Como um feed poderia funcionar para usuários anônimos e recém-registrados.

  • Quanto de personalização poderia ser alcançada sem introduzir um algoritmo de recomendação complexo.

  • Se as pré-visualizações contínuas de tópicos criariam problemas de desempenho significativos.

O objetivo é reconhecer que os 90% silenciosos são uma parte importante de uma comunidade e dar a eles uma experiência projetada em torno de como eles realmente usam a internet.

O site de teste que usarei para este projeto é

https://www.m8wtf.com/

11 curtidas

Eu realmente gostei disso — estou acompanhando. Dei uma olhada bem rápida na sua demonstração e é incrível! Vou voltar a verificar quando tiver um tempinho.

4 curtidas

Tentamos usar a página Unified New do Discourse como página inicial, pois ela parecia oferecer exatamente o feed que queríamos, com um plugin que remove as publicações de /new quando o usuário rola a página além da viewport. (O @Don conseguiu fazer isso funcionar)

A confusão surgiu do fato de que sempre testei o Discourse usando uma conta estabelecida e conectada, então minha página Unified New sempre estava cheia de publicações. Eu não havia entendido completamente como ela funcionava para usuários totalmente novos.

Após criar uma nova conta de teste, descobrimos que a Unified New estava completamente vazia, pois tópicos mais antigos não eram considerados “novos” para aquele usuário. Isso significa que ela não pode, no momento, fornecer o feed de página inicial populado que tínhamos planejado.

Uau, muito obrigado pelo comentário e pelo feedback positivo. Sei que isso não é do seu gosto e vai contra o que o Discourse foi projetado para ser.

@don está trabalhando em um novo plugin que introduz um novo sistema de estilo /feed e uma página inicial. Ele mostra aos usuários as publicações realmente novas e, em seguida, as remove se o usuário rolar além delas (usando a viewport). Se todas as publicações tiverem sido vistas, ele redireciona para /latest. Este é um trabalho em andamento.

1 curtida

Muito obrigado ao @don e ao seu novo plugin ainda não lançado: o feed agora está funcionando, de modo que os usuários sempre veem conteúdo atualizado. No entanto, ele manteve o comportamento das respostas igual ao anterior: elas não desaparecem ao sair da área visível.

Novos usuários, ao se cadastrarem, agora veem todas as publicações dos últimos 14 dias, mas isso pode ser ajustado no intervalo de tempo padrão da página inicial.

2 curtidas

O próximo item da pauta é a criação de um componente/plugin para personalizar o feed, algo como:

Pontuação do feed =

40% interesses
25% frescor
15% comportamento anterior
10% popularidade do site
10% aleatoriedade/descoberta

então um feed teria a seguinte aparência:

WARDOGS Early Access lança na quinta-feira
Nova atualização do PS5 causa bug estranho no controle
Alguém constrói um patinete elétrico de 112 km/h
Netflix confirma nova temporada de Inbetweeners
História WTF de Glasgow
História popular aleatória de Comida e Bebida

Para um novo usuário, algo como:

25% Jogos
15% TV e Cinema
15% Notícias WTF
15% Tecnologia
10% Comida e Bebida
10% Esportes
10% Rodas e Adrenalina

Depois que eles rolarem 30–50 posts, o feed começa a se adaptar.

Ou pensei em criar um componente em que, no cadastro, eles escolhem seus interesses, por exemplo, categorias:

O que você gosta?

:check_box_with_check: Jogos
:check_box_with_check: Notícias WTF
:check_box_with_check: Tecnologia
☐ Política
:check_box_with_check: TV e Cinema
☐ Esportes
:check_box_with_check: Rodas e Adrenalina
☐ Comida e Bebida

Isso vai levar tempo e testes

1 curtida

Gosto do fato de que, no celular, ao clicar em um tópico, você recebe um pré-visualização dele em um painel, podendo escolher avançar ou fechá-lo e continuar no seu feed. Bom trabalho!

1 curtida

Isso se deve ao componente de tema do @don :wink: Topic Preview Modal

2 curtidas

Qual é o objetivo dessa jornada? Um tema, um componente ou algo unificado? Um tema empacotado com componentes e assim por diante?

É algo assim que eu estava esperando há anos. A experiência do usuário do Discourse sempre me impediu de usá-lo. Ela é… realmente não… tão impressionante quanto o próprio Discourse.

Boa sorte na sua jornada.

Seu demo está ficando ótimo no mobile.

1 curtida

Vai existir um guia :slight_smile: Vou fazer o upload de todos os componentes que criei no GitHub, junto com links para componentes que outras pessoas já fizeram ou estão fazendo. Acharia errado empacotá-los como um todo, já que outros contribuíram em grande parte.

Exatamente isso. O núcleo é incrível, e é por isso que estou usando o Discourse para ver se consigo criar algo decente que não seja o Discourse usual.

1 curtida

Existem alguns temas que agrupam componentes. Talvez seja interessante considerar isso. E, de forma universal, talvez usar os ícones Lucide?

1 curtida

Ficou muito bom. Existe um theme-creator para decorar o Op nas publicações após a publicação do Op.

Ok, olhando outro tópico com respostas. Vejo que você talvez já esteja usando o selo de Autor TC do Don.

Trabalho muito bom.

2 curtidas

Não, isso é um CSS personalizado que eu usava antes de instalar.

1 curtida

Como em Topic List Previews (TLP)?

Um bom exemplo aqui: https://www.starzen.space/

Não exatamente, mais coisas de backend do que visuais

1 curtida

Ah, ok, essa declaração me levou por um caminho e, se eu fosse avaliar o TLP em relação aos seus outros requisitos:

  • Abrir a página inicial e ver imediatamente um feed de tópicos relevantes.

    :white_check_mark:

  • Rolar continuamente de um tópico para o próximo.

    :white_check_mark:

  • Pré-visualizar o conteúdo do tópico sem abrir uma página separada.

    :white_check_mark: (embora pudesse ser mais sofisticado - trabalhei em um fork do Discourse com uma versão muito mais sofisticada disso)

  • Ver imagens, vídeos e trechos diretamente no feed.

    2/3 :slight_smile: (trabalhei em um fork do Discourse com uma versão muito mais sofisticada disso que reproduz vídeo ao vivo na Lista de Tópicos :+1:)

  • Curtir, marcar como favorito ou responder quando algo chamar sua atenção.

    :white_check_mark:

  • Mover automaticamente o conteúdo já rolado para fora do caminho.

    :white_check_mark:

  • Voltar mais tarde e ver tópicos novos ou não vistos, em vez da mesma página inicial toda vez.

    :white_check_mark:

  • Personalizar gradualmente o feed usando categorias, tags e tópicos com os quais o usuário interage.

    :cross_mark: ainda não, o back-end, sim.

aliás, isso já foi mencionado antes, por exemplo:

Agora já li todos eles, mas ninguém realmente o fez.

1 curtida

Eu conheço pelo menos um, mas ele é de código fechado.