# ¿Se puede usar Discourse completamente a través de las API para construir una aplicación Flutter?

**URL:** https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554
**Category:** Development
**Created:** [15 Diciembre, 2024 19:01 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554 "2024-12-15T19:01:26Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![SubStrider](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/substrider/32/512604_2.png) [@SubStrider](https://meta.discourse.org/u/SubStrider)
#### Post date: [15 Diciembre, 2024 19:01 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/1 "2024-12-15T19:01:26Z")

</div>

Veo que las API son bastante extensas, pero antes de adentrarme en esta dirección, quería saber si es posible crear una aplicación Flutter personalizada utilizando completamente las API que admite Discourse.

Actualmente estamos en XenForo y primero migraremos a Discourse y luego comenzaremos a trabajar en la experiencia de usuario de la aplicación personalizada.

¿Hay algo más de lo que debamos tener cuidado?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [15 Diciembre, 2024 19:09 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/2 "2024-12-15T19:09:40Z")

</div>

¿Tiene la intención de usar una vista web?

Si no:

- cantidades potencialmente masivas de duplicación del trabajo de front-end
  - incl. duplicación continua de mantenimiento

- incompatibilidad con el componente de tema y el ecosistema de complementos, por lo que no se puede aprovechar.

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [15 Diciembre, 2024 19:16 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/3 "2024-12-15T19:16:57Z")

</div>

> [@Flutter Mobile App for your Discourse Community](https://meta.discourse.org/t/flutter-mobile-app-for-your-discourse-community/299768?u=moin):
>
> Hey everyone, I’ve been working on a Flutter mobile app for my discourse community for the past 3-4 months. Was wondering if anyone else is interested in using Flutter to build a mobile application for their Discourse Community. Ask me any questions below. slight_smile

---

<div class="post-metadata">

### Author: ![SubStrider](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/substrider/32/512604_2.png) [@SubStrider](https://meta.discourse.org/u/SubStrider)
#### Post date: [15 Diciembre, 2024 19:17 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/4 "2024-12-15T19:17:34Z")

</div>

Hola Robert:

No, no planeo usar la vista web. Eso iría en contra del propósito de una experiencia de usuario personalizada.

La duplicación de trabajo es un hecho y es aceptable.

¿A qué te refieres con incompatibilidad con el ecosistema de componentes temáticos y complementos? ¿Quieres decir que los complementos no expondrán las API y, por lo tanto, no se podrán usar en la aplicación móvil personalizada? El componente temático es específico del framework de front-end, por lo que, comprensiblemente, los componentes de Ember no se pueden usar en Flutter.

---

<div class="post-metadata">

### Author: ![SubStrider](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/substrider/32/512604_2.png) [@SubStrider](https://meta.discourse.org/u/SubStrider)
#### Post date: [15 Diciembre, 2024 19:22 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/5 "2024-12-15T19:22:10Z")

</div>

Leí ese hilo antes de publicarlo aquí. Ese hilo se centró en el debate PWA vs. nativo y el autor original nunca regresó.

Mi consulta no es específicamente sobre Flutter de todos modos, aunque lo mencioné en el título.

La consulta en realidad es, dado que hay una lista extensa de APIs expuestas, ¿es posible crear un front-end personalizado completamente funcional utilizando esas APIs? ¿O hay algunas lagunas que nos impedirían hacerlo?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [15 Diciembre, 2024 19:31 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/6 "2024-12-15T19:31:49Z")

</div>

> [@SubStrider](#):
>
> ¿A qué te refieres con incompatibilidad con el ecosistema de componentes temáticos y plugins?

Los elementos del front-end de estos (los componentes temáticos son 100% front-end) están escritos en EmberJS y utilizan la API de JavaScript de Discourse.

Casi con toda seguridad te cortarás de todas esas personalizaciones.

> [@SubStrider](#):
>
> ¿Quieres decir que los plugins no expondrán las API y, por lo tanto, no se podrán usar en la aplicación móvil personalizada?

No, pero son bastante inútiles sin los cambios en el front-end.

Mira mi publicación:

> [@Flutter Mobile App for your Discourse Community](https://meta.discourse.org/t/flutter-mobile-app-for-your-discourse-community/299768/5?u=merefield):
>
> But there is? [Whitelisted Discourse app with Push Notifications via OneSignal](https://meta.discourse.org/t/whitelisted-discourse-app-with-push-notifications-via-onesignal/58247) (good solution as uses Web View allowing most plugins and theme components to work but needs yearly maintenance) The official [‎Discourse Hub on the App&nbsp;Store](https://apps.apple.com/us/app/discourse-hub/id1173672076) and android equivalent [https://play.google.com/store/apps/details?id=com.discourse](https://play.google.com/store/apps/details?id=com.discourse)[Lexicon: a customizable native mobile app for your Discourse site](https://meta.discourse.org/t/lexicon-a-customizable-native-mobile-app-for-your-discourse-site/201085) But: Discourse is already a PWA so the benefits are minimal? Once Apple chooses to fix its support for web …

(El tema está enlazado arriba)

Básicamente, es muy divertido para un proyecto, estoy seguro, pero no tiene ningún sentido económico ni técnico.

Si quieres desplegar en las tiendas de aplicaciones, hay una opción mucho mejor.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [15 Diciembre, 2024 19:56 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/7 "2024-12-15T19:56:37Z")

</div>

Sí, es totalmente posible, ya que Discourse es solo una aplicación Ember sobre la API de Rails.

Creo que es una idea terrible, ya que simplemente duplicarás miles de horas de trabajo. Dicho esto, tuve un cliente que hizo exactamente eso y parecían contentos con ello. No he sabido de ellos en mucho tiempo; no sé por qué.

Lo bueno del enfoque es que en cualquier momento podrías decidir cambiar al frontend de Discourse. Edición: O, quizás, usar Discourse después de la migración y luego nunca conseguir que tu aplicación sea lo suficientemente buena como para justificar el cambio a ella, o permitir a los usuarios elegir qué frontend prefieren.

---

<div class="post-metadata">

### Author: ![SubStrider](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/substrider/32/512604_2.png) [@SubStrider](https://meta.discourse.org/u/SubStrider)
#### Post date: [16 Diciembre, 2024 03:42 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/8 "2024-12-16T03:42:06Z")

</div>

Gracias Jay, tu respuesta es realmente lo que estaba buscando. De hecho, podría usar el front end de Discourse para mis usuarios avanzados y construir una aplicación móvil minimalista para atraer a los usuarios ocasionales que querrían interactuar sin sentirse abrumados. Ya sabes, los que les gusta usar Reddit y Facebook.

¡Vaya, he vuelto a Discourse después de años y la evolución aquí es asombrosa! Muy emocionado.

Mi comunidad tiene 75.000 miembros y 2,5 millones de publicaciones, por lo que llevaría algo de trabajo migrar. Ese es mi primer objetivo por ahora.

---

<div class="post-metadata">

### Author: ![nat](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nat/32/235063_2.png) [@nat](https://meta.discourse.org/u/nat)
#### Post date: [16 Diciembre, 2024 07:39 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/9 "2024-12-16T07:39:23Z")

</div>

[quote=“SubStrider, post:8, topic:342554”]Sabes, los que les gusta usar reddit y facebook.  
[/quote]

Tenemos algunos temas para jugar que pueden consumir menos tiempo que “construir un frontend de Discourse en flutter desde cero”

> [@A reddit-ish theme for Discourse](https://meta.discourse.org/t/a-reddit-ish-theme-for-discourse/269466):
>
> information_sourceSummary A Discourse theme that looks a little like reddithammer_and_wrenchRepository [github.com/discourse/discourse-redditish-theme](https://github.com/discourse/discourse-redditish-theme)questionInstall Guide [How to install a theme or theme component](https://meta.discourse.org/t/how-do-i-install-a-theme-or-theme-component/63682)open_bookNew to Discourse Themes? [Beginner’s guide to using Discourse Themes](https://meta.discourse.org/t/beginners-guide-to-using-discourse-themes/91966)warning This is still a work in progress and not all features are supported yet (bulk topic select for example), but it’s usable as-i…

> [@FKB Pro - Social theme](https://meta.discourse.org/t/fkb-pro-social-theme/234323):
>
> FKB Pro is a highly modified, detailed, professional social theme, but still user-friendly. rocketwarning This theme is quite sensitive and maybe not well compatible with other theme components or plugins you use! Please test it before use. These usually need some css modification. If you have any issue please report and will fix it. Layout On desktop: Three column layout. Sidebar ready On mobile:

Puedes instalar estos temas en tu sitio y los usuarios podrán seleccionarlos por sí mismos.

---

<div class="post-metadata">

### Author: ![manuel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/manuel/32/468169_2.png) [@manuel](https://meta.discourse.org/u/manuel)
#### Post date: [16 Diciembre, 2024 09:09 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/10 "2024-12-16T09:09:24Z")

</div>

Me gustaría que me demostraran lo contrario con un ejemplo real de un frontend independiente. ¡También me gustaría que me corrigieran si algo de lo que digo aquí no es exacto! 🤗 Según mi entendimiento, hay un error de cálculo cada vez que surge este tema, en el sentido de: Discourse tiene una API y una capa de frontend independiente, así que, ¿por qué no probar simplemente un frontend diferente allí?

El error de cálculo que veo es que

- Simplemente por la escala, no se aprecia la cantidad de elementos de interfaz y vistas reales. No solo existe la lista de temas y la vista de temas, sino mucho más que parecen secundarias al principio, pero que necesitarías diseñar de todos modos. Solo mirando las páginas de usuario, tendrías que replicar todas las vistas diferentes o encontrar una estructura alternativa.
- Más conceptualmente, el frontend de Discourse no es solo presentacional, sino una capa altamente funcional. Todo el seguimiento de lectura se basa en Ember y, sin él, muchas de las sofisticadas funciones de Discourse no funcionarán. Si no replicas el seguimiento de usuario en tu frontend y lo conectas minuciosamente con el backend, tendrías que eliminar los niveles de confianza, las insignias, los empujones, los estados de lectura, etc., y lo que tienes es una aplicación bastante básica que permite a los usuarios leer, publicar y dar “me gusta”. Probablemente sea mucho más fácil construir una aplicación tan simple sobre una base simple que sobre Discourse.

---

<div class="post-metadata">

### Author: ![SubStrider](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/substrider/32/512604_2.png) [@SubStrider](https://meta.discourse.org/u/SubStrider)
#### Post date: [16 Diciembre, 2024 09:19 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/11 "2024-12-16T09:19:10Z")

</div>

Gracias, eso es probablemente algo que habría descubierto si hubiera profundizado más. Es una pena entonces si todas las estadísticas se activan y calculan en el frontend en lugar de, por ejemplo, usar colas en el backend. Nada que ver con headless entonces.

---

<div class="post-metadata">

### Author: ![SubStrider](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/substrider/32/512604_2.png) [@SubStrider](https://meta.discourse.org/u/SubStrider)
#### Post date: [16 Diciembre, 2024 09:25 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/12 "2024-12-16T09:25:16Z")

</div>

Gracias Natalie, ya miré los temas antes y diría que FKB Pro está más cerca de lo que querríamos.

Mira este concepto de interfaz de usuario para la aplicación móvil.

 ![Una captura de pantalla de una plataforma de redes sociales que muestra publicaciones sobre juegos, arquitectura y viajes con una imagen de fondo de una persona sentada en la parte trasera de un vehículo al atardecer. (Subtitulado por IA)](https://global.discourse-cdn.com/meta/original/4X/3/1/9/3190651fbcde37017d277ccf4f2e564fc240d7bc.jpeg)

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [16 Diciembre, 2024 09:28 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/13 "2024-12-16T09:28:43Z")

</div>

> [@manuel](#):
>
> Todo el seguimiento de usuarios se basa en Ember

Hmmmm… ¿estás seguro de que podemos decir eso?

Los “Me gusta” se cuentan en el backend, los recuentos de publicaciones y temas son del backend…

Creo que el tiempo de lectura se basa en el código del frontend, pero eso no es sorprendente…

---

<div class="post-metadata">

### Author: ![manuel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/manuel/32/468169_2.png) [@manuel](https://meta.discourse.org/u/manuel)
#### Post date: [16 Diciembre, 2024 09:34 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/14 "2024-12-16T09:34:29Z")

</div>

> [@merefield](#):
>
> Creo que el tiempo de lectura se basa en el código del front-end, pero eso no es sorprendente…

Sí, cambiaré a “seguimiento de lectura”… Pero sigo en mi punto: muchas funciones avanzadas se basan en el seguimiento de lectura.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [16 Diciembre, 2024 09:36 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/15 "2024-12-16T09:36:06Z")

</div>

Me parece que es solo un tema.

No malgastes tu dinero en una aplicación totalmente nativa.

---

<div class="post-metadata">

### Author: ![manuel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/manuel/32/468169_2.png) [@manuel](https://meta.discourse.org/u/manuel)
#### Post date: [16 Diciembre, 2024 09:39 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/16 "2024-12-16T09:39:20Z")

</div>

> [@merefield](#):
>
> Me parece que es solo un Tema.

Estaría de acuerdo con eso. Algunos componentes que ya podrían hacer el trabajo pesado para esto:

- Ya sea [Topic Cards](https://meta.discourse.org/t/topic-cards/296048), [Topic List Thumbnails](https://meta.discourse.org/t/topic-list-thumbnails/150602) o [Topic List Previews Theme Component](https://meta.discourse.org/t/topic-list-previews-theme-component/209973) para ajustar la vista de la lista
- [F NAV - Mobile Navigation Tabs](https://meta.discourse.org/t/f-nav-mobile-navigation-tabs/342277) para la navegación del pie de página

---

<div class="post-metadata">

### Author: ![SubStrider](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/substrider/32/512604_2.png) [@SubStrider](https://meta.discourse.org/u/SubStrider)
#### Post date: [16 Diciembre, 2024 09:43 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/17 "2024-12-16T09:43:04Z")

</div>

Sí, basándonos en las útiles respuestas aquí, primero intentaremos llegar lo más lejos posible con el tema en sí. La primera prioridad es migrar con toda la personalización que tenemos implementada, que incluye un mercado bullicioso y un sistema de calificación comercial.

---

<div class="post-metadata">

### Author: ![SubStrider](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/substrider/32/512604_2.png) [@SubStrider](https://meta.discourse.org/u/SubStrider)
#### Post date: [16 Diciembre, 2024 12:58 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/18 "2024-12-16T12:58:46Z")

</div>

Ok, otra consulta. ¿Los usuarios pueden suscribirse a categorías para ver solo hilos de esas categorías en sus feeds? Eso es algo que tenía en mente con las API.

¿Hay alguna forma de mostrar contenido recomendado en el feed basado en puntuaciones y relevancia para un usuario?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [16 Diciembre, 2024 14:00 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/19 "2024-12-16T14:00:36Z")

</div>

Lo separaría en otro Tema si fuera tú.

Ten en cuenta que en Discourse, hilo = Tema

Hubo una solicitud de funcionalidad para esto:

> [@Combined Watching/Tracking list](https://meta.discourse.org/t/combined-watching-tracking-list/256834?u=merefield):
>
> Hi there, I’m getting requests from quite a few users for a list of all Tracked or Watched topics together. Since they are heavy users they have lots of Tracked topics and some Watched topics too, and they’re having a hard time keeping track of the topics they were participating in if those topics don’t have new posts in the Unread list. There were related requests here: [Quick access to list of tracked / watched / muted topics?](https://meta.discourse.org/t/quick-access-to-list-of-tracked-watched-muted-topics/44435)[Unread topics in query-link-lists tracking/watching - #8 by Jonat…](https://meta.discourse.org/t/unread-topics-in-query-link-lists-tracking-watching/55861/8)

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [15 Enero, 2025 14:01 UTC](https://meta.discourse.org/t/can-discourse-be-used-entirely-through-the-apis-to-build-a-flutter-app/342554/20 "2025-01-15T14:01:28Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
