Usar Discourse para crear un blog, un Reddit, un X o una plataforma de scroll estilo Facebook

Estoy iniciando este tema para documentar mi camino mientras intento convertir Discourse en una plataforma más visual y de desplazamiento continuo, algo más cercano a la experiencia de navegación que ofrecen Reddit, X y Facebook.

Usaré este tema para compartir lo que intento, lo que funciona, lo que no, los componentes que estoy utilizando y cualquier problema que encuentre. Espero que también ayude a cualquier otra persona interesada en usar Discourse para algo más allá de un diseño de foro tradicional.

El punto de partida para este proyecto fue la regla 90–9–1.

Sugiere que en la mayoría de las redes sociales, blogs, etc.:

  • El 90% de los usuarios principalmente navega y consume contenido.

  • El 9% ocasionalmente reacciona, da me gusta, comparte o comenta.

  • El 1% crea activamente la mayor parte del contenido.

Obviamente, los porcentajes exactos variarán entre comunidades, pero el principio sigue siendo relevante: la mayoría de los visitantes son lectores, no contribuyentes.

Discourse es excelente para atender al 9% y al 1%. Está construido en torno a discusiones, respuestas y participación activa. Sin embargo, quiero hacerlo igualmente atractivo para el grupo mucho más grande que simplemente quiere abrir el sitio y navegar por contenido fresco e interesante.

Lo que estoy intentando construir

Quiero usar Discourse para crear un feed más visual y continuo (desplazamiento infinito) similar a Reddit, X o Facebook.

La experiencia idealmente se vería algo así:

  • Abrir la página de inicio e inmediatamente ver un feed de temas relevantes.

  • Desplazarse continuamente de un tema al siguiente.

  • Previsualizar el contenido del tema sin abrir una página separada.

  • Ver imágenes, videos y extractos directamente en el feed.

  • Dar me gusta, marcar como favorito o responder cuando algo llama la atención.

  • Mover automáticamente el contenido previamente desplazado fuera de la vista.

  • Volver más tarde y ver temas frescos o no vistos, en lugar de la misma página de inicio cada vez.

  • Personalizar gradualmente el feed utilizando categorías, etiquetas y temas con los que el usuario interactúa.

Algunas personas podrían llamar a esto «doom scrolling», pero también es simplemente la forma en que una gran cantidad de personas consumen contenido en línea hoy en día. Pueden leer decenas de publicaciones sin comentar nunca, pero siguen siendo usuarios genuinos que generan vistas, comparten enlaces y potencialmente regresan cada día.

¿Por qué construirlo con Discourse?

Discourse ya proporciona la mayor parte de las piezas difíciles:

  • Cuentas y perfiles de usuario

  • Categorías y etiquetas

  • Me gusta, marcadores y notificaciones

  • Niveles de confianza y moderación

  • Creación de temas y respuestas

  • Seguimiento de leídos y no leídos

  • Temas sugeridos y relacionados

  • Un sistema maduro de plugins y componentes de tema

Lo que parece faltar es un feed diseñado principalmente en torno al descubrimiento y el consumo pasivo. (obviamente, Discourse no fue diseñado de esta manera)

Hasta dónde he llegado

  1. Comencé con la increíble tema Redditish de @awesomerobot, que tuve que hacer un fork para poder editar varios aspectos, como eliminar la barra lateral personalizada. También edité mucho el CSS para diseñarlo como lo queríamos.
  2. Habilitar Nested Views fue un requisito indispensable, ya que cubre el estilo necesario para este tipo de sitio.
  3. Creé y agregué un menú desplazable estilo YouTube que muestra todas las categorías y enlaces personalizados. Usé Custom Top Navigation Links para personalizar y agregar enlaces.
  4. Un modal de previsualización de temas era imprescindible y comencé a diseñarlo, pero la leyenda @Don construyó una versión mejor que puede encontrarse aquí
  5. Una barra lateral derecha en caché estática en todas partes era imprescindible, así que comencé con right sidebar blocks y luego creé un componente de tema para mostrarlo en temas, etc.
  6. Usando custom header links (icons), agregué un «Crear una publicación» en la cabecera para hacer el contenedor más limpio.
  7. Imágenes en las publicaciones centradas con un fondo difuminado para que se vea más ordenado (similar a Reddit)
  8. Establecer extractos de temas de 150 caracteres y mostrarlos entre el título y la imagen en las tarjetas de temas fue un requisito indispensable (similar a Facebook y X)

Los próximos pasos serían un feed dedicado que podría:

  1. Comenzar con contenido reciente de un período definido, como los últimos 14 días.

  2. Priorizar temas de categorías y etiquetas que el usuario sigue.

  3. Mezclar temas populares o en tendencia para el descubrimiento.

  4. Registrar cuándo un tema ha sido realmente visto o desplazado.

  5. Reducir la prioridad de los temas vistos sin ocultarlos permanentemente.

  6. Permitir reacciones y respuestas directas desde el feed.

Esto no reemplazaría las listas de temas tradicionales o las discusiones. Sería una forma adicional de descubrir y consumir el mismo contenido de Discourse.

Sigue el viaje

Seguiré actualizando este tema a medida que el proyecto se desarrolle, incluidos los componentes que pruebo, los cambios que hago y los obstáculos con los que me encuentro.

También me gustaría escuchar a cualquier persona que haya intentado algo similar, particularmente en cuanto a:

  • Si los datos existentes de seguimiento de lectura podrían apoyar esto.

  • Cómo podría funcionar un feed para usuarios anónimos y recién registrados.

  • Cuánta personalización podría lograrse sin introducir un algoritmo de recomendación complejo.

  • Si las previsualizaciones continuas de temas crearían problemas de rendimiento significativos.

El objetivo es reconocer que el silencioso 90% es una parte importante de una comunidad y darles una experiencia diseñada en torno a cómo realmente usan internet.

El sitio de prueba que estaré usando para este proyecto es

https://www.m8wtf.com/

11 Me gusta

Me gusta mucho esto, voy siguiendo la conversación. Di un vistazo muy rápido a tu demo y ¡es genial! Volveré a mirar cuando tenga tiempo.

4 Me gusta

Intentamos usar la página Unified New de Discourse como página de inicio porque parecía ofrecer exactamente el feed que queríamos, junto con un plugin que elimina las publicaciones de /new cuando el usuario hace scroll más allá del viewport. (@Don logró que funcionara).

La confusión surgió del hecho de que siempre he probado Discourse usando una cuenta establecida y con sesión iniciada, por lo que mi página Unified New siempre estaba llena de publicaciones. No había comprendido completamente cómo funcionaba para usuarios completamente nuevos.

Después de crear una cuenta de prueba nueva, descubrimos que Unified New estaba completamente vacía porque los temas más antiguos no se consideraban «nuevos» para ese usuario. Eso significa que actualmente no puede proporcionar el feed de página de inicio con contenido que habíamos planeado.

Vaya, muchas gracias por el comentario y por el feedback positivo. Sé que no es lo tuyo y va en contra de lo que Discourse pretendía ser.

@don está trabajando en un nuevo plugin que introduce un nuevo sistema de estilo /feed y una página de inicio. Esto muestra a los usuarios las publicaciones realmente nuevas y luego las elimina si el usuario hace scroll más allá de ellas (utilizando el viewport). Si se han visto todas las publicaciones, redirige a /latest. Este es un trabajo en curso.

1 me gusta

Muchísimas gracias a @don y a su nuevo plugin aún no lanzado: ahora el feed funciona correctamente y los usuarios siempre ven contenido fresco. Sin embargo, mantuvo las respuestas con el mismo comportamiento de antes, ya que no desaparecen al salir del viewport.

Los nuevos usuarios, al registrarse, ahora ven todas las publicaciones de los últimos 14 días, aunque esto se puede ajustar en el intervalo de tiempo predeterminado de la página principal.

2 Me gusta

Lo siguiente en la agenda es crear un componente/plugin para personalizar el feed, algo como:

Puntuación del feed =

40% intereses
25% frescura
15% comportamiento previo
10% popularidad del sitio
10% azar/descubrimiento

por lo que un feed se vería así:

Lanzamiento de Early Access de WARDOGS el jueves
Nueva actualización de PS5 provoca un extraño fallo en el mando
Alguien construye un patinete eléctrico de 112 km/h
Netflix confirma nueva serie de The Inbetweeners
Noticia WTF de Glasgow
Noticia popular aleatoria de Comida y Bebida

Para un usuario nuevo, algo como:

25% Videojuegos
15% TV y Cine
15% Noticias WTF
15% Tecnología
10% Comida y Bebida
10% Deportes
10% Vehículos y Adrenalina

Entonces, después de que hayan desplazado 30–50 publicaciones, su feed comienza a adaptarse.

o también he pensado en crear un componente en el que, al registrarse, elijan sus intereses, por ejemplo, categorías:

¿Qué te interesa?

:check_box_with_check: Videojuegos
:check_box_with_check: Noticias WTF
:check_box_with_check: Tecnología
☐ Política
:check_box_with_check: TV y Cine
☐ Deportes
:check_box_with_check: Vehículos y Adrenalina
☐ Comida y Bebida

Esto va a llevar tiempo y pruebas

1 me gusta

Me gusta que en la versión móvil, al hacer clic en un tema, se muestre una vista previa en una hoja emergente, y que puedas elegir si quieres profundizar más o cerrar la hoja y seguir con tu feed. ¡Buen trabajo!

1 me gusta

Eso se debe al componente de tema de @don :wink: Topic Preview Modal

2 Me gusta

¿Cuál es el objetivo de este viaje? ¿Un tema, un componente o algo unificado? ¿Un tema empaquetado con componentes y demás?

Es algo como esto por lo que he estado esperando durante años. La UX de Discourse siempre me ha impedido usarlo. Es … realmente no … tan genial como lo es Discourse en sí mismo.

Te deseo suerte en tu viaje.

Tu demo se ve genial en móvil.

1 me gusta

Habrá una guía :slight_smile: Subiré todos los componentes que he creado a GitHub, junto con enlaces a componentes que otras personas ya han creado o están creando. Me sentiría mal empaquetarlo todo, ya que otros han contribuido en gran medida.

Exactamente, el núcleo es genial, por eso estoy usando Discourse para ver si puedo lograr algo decente que no sea el típico Discourse.

1 me gusta

Hay algunos temas que incluyen componentes. Quizás convendría tenerlo en cuenta. Y, de forma universal, ¿por qué no usar iconos de Lucide?

1 me gusta

Se ve muy bien. Hay un theme-creator para decorar al autor del tema en las publicaciones posteriores al tema original.

Vale, mirando otro tema con respuestas. Veo que quizás ya estés usando la insignia de autor de TC de Don.

Muy buen trabajo.

2 Me gusta

No, eso es un CSS personalizado que usaba antes de instalarlo.

1 me gusta

Como Topic List Previews (TLP)?

Buen ejemplo aquí: https://www.starzen.space/

No exactamente, más bien se trata de backend en lugar de visuales

1 me gusta

Ah, vale. Esa afirmación me llevó por un camino equivocado. Si tuviera que puntuar TLP según tus otros requisitos:

  • Abrir la página de inicio y ver de inmediato un feed de temas relevantes.

    :white_check_mark:

  • Desplazarse continuamente de un tema al siguiente.

    :white_check_mark:

  • Previsualizar el contenido del tema sin abrir una página separada.

    :white_check_mark: (aunque podría ser más sofisticado; he trabajado en un fork de Discourse con una versión mucho más sofisticada de esto)

  • Ver imágenes, vídeos y fragmentos directamente en el feed.

    2/3 :slight_smile: (he trabajado en un fork de Discourse con una versión mucho más sofisticada de esto que reproduce vídeo en vivo en la lista de temas :+1:)

  • Dar «me gusta», marcar con marcador o responder cuando algo capta tu atención.

    :white_check_mark:

  • Mover automáticamente el contenido previamente desplazado fuera de la vista.

    :white_check_mark:

  • Volver más tarde y ver temas nuevos o no vistos, en lugar de la misma página de inicio cada vez.

    :white_check_mark:

  • Personalizar gradualmente el feed utilizando categorías, etiquetas y temas con los que el usuario interactúa.

    :cross_mark: aún no, aunque sí a nivel de backend.

por cierto, esto ya se ha planteado antes, p. ej.:

Ya los he leído todos, pero nadie lo ha hecho de verdad.

1 me gusta

Conozco al menos uno, pero es de código cerrado.