Lexicon: una aplicación móvil nativa personalizable para tu sitio de Discourse

¡Hola a todos!

Quería pasar rápidamente por aquí para mencionar que acabo de hacer de código abierto un proyecto llamado Lexicon junto con algunos de mis colegas.

Es una aplicación móvil nativa predefinida y personalizable construida sobre la API de Discourse. La desarrollamos para ayudar a integrar rápidamente funciones de discusión y mensajería en otros proyectos móviles nativos.

Este proyecto fue muy agradable de construir, principalmente gracias a todo el arduo trabajo realizado con antelación por el equipo central de Discourse y la comunidad a lo largo de los años.

Las capturas de pantalla están disponibles en la introducción.

Las personas con conocimientos técnicos pueden consultar nuestra Guía de inicio rápido, que les permitirá navegar por este sitio de Discourse mientras prueban la aplicación.

No duden en contactarnos si tienen alguna pregunta, comentario o sugerencia.

Gracias,
Ryan

P.D. No estaba seguro de cuál sería la mejor categoría para publicar esto. Si hay una más adecuada, siéntanse libres de reasignarlo.

58 Me gusta

Realmente aprecio la documentación clara, especialmente la parte arquitectónica. ¡No puedo esperar a probarla localmente!

Notificaciones push | :cross_mark::hammer: En desarrollo

¿Hay alguna fecha estimada para eso?

8 Me gusta

¡Eso es genial, @RyanKF! ¿En qué dirección deberían ayudar primero los nuevos desarrolladores? Tengo algo de experiencia con aplicaciones móviles en React.

3 Me gusta

Esto es muy genial. ¿Parece que está bajo la licencia MIT?

1 me gusta

¿Oh, se supone que esto es un cliente nativo de Discourse como Fig? Si es así, ¡me encanta! :grinning:

4 Me gusta

¡Fig se ve genial! Parece que realmente han logrado crear una experiencia nativa para iOS en Discourse.

Algunas diferencias que puedo observar…

Soporte para tabletas

Fig tiene un soporte excelente para tabletas. Nosotros aún no hemos abordado eso.

Aplicación de un solo sitio

Al igual que Discourse Mobile, Fig ha adoptado el enfoque de “gestor de sitios”, lo que te permite agregar y navegar por múltiples sitios de Discourse. Lexicon, en cambio, se centra más en crear una aplicación individual, posiblemente con marca blanca, para un sitio de Discourse.

Lexicon en sí no es una aplicación

Además, Lexicon es más bien una “plantilla de aplicación” que puedes tomar, personalizar y publicar tú mismo en las tiendas de aplicaciones o Play Store. Fig ofrece una aplicación ya publicada.

Oferta Premium

Fig cuenta con una oferta premium para algunas funciones. Lexicon no tiene ninguna oferta premium.

El único punto donde el dinero entraría en juego es si no tienes a nadie más que te ayude a integrar, personalizar o publicar Lexicon. En ese caso, estaríamos encantados de hablar sobre cómo trabajar contigo.

Dicho esto, sé que muchos usuarios de este sitio son técnicos o semitécnicos, por lo que espero que la documentación sea lo suficientemente detallada para guiar a muchas personas en ese proceso sin necesidad de ayuda adicional.

Tecnologías y soporte de dispositivos

Estoy haciendo una suposición aquí, pero parece que Fig construyó su aplicación usando Swift, por lo que es verdaderamente nativa, lo cual es fantástico.

Nosotros construimos Lexicon usando React Native, lo que significa que se basa en JavaScript (entiendo que no a todos les gusta ese enfoque).

Una ventaja de nuestro uso de React Native es que automáticamente tenemos aplicaciones publicables para Android e iOS desde el principio, y contamos con una alta tasa de reutilización de código.

La mayoría de las diferencias entre Android e iOS en nuestra base de código son detalles relacionados con la apariencia y la experiencia de usuario, como un botón de acción flotante en Android en lugar de un botón en la cabecera en iOS.

11 Me gusta

Es MIT. Y en todos los demás detalles del anuncio de esto, había olvidado agregar un archivo de LICENCIA al repositorio: ¡gracias por señalarlo!

6 Me gusta

¡Y eres increíble por querer contribuir ya, @4ong!

Frontend

En el lado del frontend, un área en la que me gustaría mejorar es nuestro soporte para características incrustadas en el contenido sin procesar de una publicación.

Además de manejar el contenido Markdown regular de la publicación, también podemos admitir varias características proporcionadas por el marcado personalizado de Discourse.

Como probablemente ya sepas, Discourse admite una sintaxis personalizada para características como citas, alternancias, fechas e incluso encuestas.

En un enfoque bastante típico, hemos establecido un soporte inicial para características básicas como incrustaciones de código, y luego tenemos un bloque de «<característica> no es compatible en este momento» para las características que aún no se han implementado.

Me encantaría eliminar por completo esos bloques de «no compatible» de nuestra aplicación. Las encuestas y las alternancias serían especialmente deseables de tener soportadas.

Además, dado que Lexicon opera sobre el contenido sin procesar de una publicación, omitimos el soporte de OneBox. Por lo tanto, como mínimo, sería bueno tener un soporte básico para las vistas previas de enlaces.

Backend

Una característica que estoy emocionado de admitir eventualmente es el enrutamiento profundo desde correos electrónicos. Probablemente no sea una característica trivial de implementar y probablemente implicaría crear un plugin de Discourse en Ruby.

Básicamente, esto permitiría a los usuarios tocar un enlace a una publicación en un correo electrónico de Discourse y que abra la aplicación (si está instalada) directamente a esa publicación específica mediante un enlace profundo a través de Discourse.

Y si la aplicación no está instalada, o el usuario no está en un dispositivo móvil, los redirigiría al sitio como de costumbre.

Si alguien quiere abordar esto, contáctame. Sería enorme tenerlo funcionando.


EDITA: También consulta la página Características de Discourse compatibles de nuestra documentación para ver qué características aún no son compatibles y siéntete libre de abordar cualquiera de ellas (excepto las notificaciones push, que ya estamos trabajando).

7 Me gusta

Con optimismo, en las próximas semanas aquí; aunque aún no puedo ofrecer garantías definitivas.

Ya hemos superado la etapa de prueba de concepto, pero aún tenemos algunos detalles por pulir.

Además, el soporte para esta función requerirá instalar nuestro plugin de Discourse en tu sitio.

Para dar algunos detalles: construimos la aplicación móvil Lexicon con Expo, un conjunto increíble de herramientas y servicios de compilación para aplicaciones React Native, que incluye soporte para notificaciones push.

Sin embargo, no encontramos ningún plugin de Discourse existente que se integrara con el servicio de notificaciones push de Expo, por lo que terminamos teniendo que crear uno. Afortunadamente, la integración de código abierto existente con OneSignal es muy similar a lo que necesitábamos, lo que nos permitió usar su proyecto como punto de partida. (muy agradecidos a pmusaraj por eso :folded_hands:).

Además de publicar el plugin e integrarlo con la aplicación móvil, por supuesto que también queremos actualizar la documentación. Dado que Lexicon te permite publicar tu propia aplicación, esto va más allá de simplemente configurar notificaciones push para una sola aplicación en las tiendas App Store o Play Store.

Por lo tanto, queremos asegurarnos de que los usuarios del proyecto reciban una guía adecuada para configurarlo correctamente, de modo que simplemente funcione.

7 Me gusta

Gracias a todos por sus comentarios. No duden en avisarme si tienen más preguntas.

Por cierto, se me olvidó mencionar que hoy también tenemos un post en ProductHunt que está yendo bastante bien. Si quieren mostrar su apoyo, ¡siéntanse libres de echarle un vistazo!

https://www.producthunt.com/posts/lexicon-2

1 me gusta

¡Ah, vale! Gracias por aclararlo. Lexicon suena muy interesante. ¡Espero con ilusión el soporte para tablets!

Si quisiera crear una plataforma de redes sociales basada en Discourse, ¿sería Lexicon ideal para ese propósito? Asumiendo que Lexicon no llegue a las plataformas de escritorio en el futuro, la falta de soporte para escritorio sería un obstáculo.

1 me gusta

¡Muy emocionante!

Unos comentarios y preguntas:

  1. No queda claro si DiscourseConnect es compatible; podría valer la pena añadirlo a la página de características compatibles.

  2. Hay muchas opciones disponibles para instalar Prose, tanto en el tutorial como en la documentación. Sospecho que ese material podría organizarse mejor. Me quedé con dudas sobre cómo funcionaría la configuración de SSL si intentara hacerlo de la forma más sencilla posible usando tu imagen de Docker.

  3. Me encantaría probarlo, pero no hay una manera obvia de hacerlo. Si publicaran una aplicación disponible para Meta, podríamos :slight_smile:

  4. Las notificaciones push y el enlazado profundo, como mencionan, son definitivamente características importantes para mí.

  5. Dadas las complejidades de las actualizaciones, el despliegue de aplicaciones, Prose, etc., rápidamente pienso en estar interesado en un servicio alojado y con soporte de llave en mano de pago donde ustedes se encarguen de todo. Podría valer la pena que lo ofrezcan. Me da curiosidad cómo sería la estructura de precios.

5 Me gusta

¿Junto con el soporte para tabletas, verdad? :wink:

1 me gusta

este es un trabajo excelente

4 Me gusta

¿Dispone Lexicon de su propia comunidad en Discourse? GitHub es útil, pero no se puede discutir sobre Lexicon allí de manera adecuada.

5 Me gusta

Hola, parece haber un problema cuando la aplicación carga una publicación que contiene caracteres no en inglés (por ejemplo, caracteres chinos 中文). Supongo que podría estar relacionado con la función de nombres Unicode de Discourse (Unicode usernames and group names) y he abierto un issue para publicar el registro detallado del error en el repositorio de GitHub:

1 me gusta

¡Muy bien! ¿Ya has incorporado alguna solución de moderación automatizada? Me encantaría reducir los abusos y el spam que veo en algunos foros.

Intenté configurar la aplicación móvil Lexicon siguiendo el Tutorial disponible en Lexicon. Después de completar todos los pasos e iniciar la aplicación móvil para una instancia gratuita de Discourse (https://meta.discourse.org/), obtengo estos errores en el teléfono y en el registro de la terminal respectivamente.

Error en la terminal:

Ninguno de estos archivos existe:

\generated\server\globalTypes(.native|.android.js|.native.js|.js|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.svg|.native.svg|.svg)

src\generated\server\globalTypes\index(.native|.android.js|.native.js|.js|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.svg|.native.svg|.svg)
 5 | import { DEFAULT_CHANNEL } from '../constants';
  6 | import { Text } from '../core-ui';
\u003e  7 | import { TopicsSortEnum } from '../generated/server/globalTypes';
    |                                 ^
   8 | import {
  9 |   anchorToMarkdown,
 10 |   errorHandler,
2 Me gusta

Tras configurar el proyecto, se producen repetidamente los siguientes errores:

He incluido http:// en MOBILE_HOST_PRONE, pero aun así aparece un error al ejecutar la aplicación en el teléfono.

1 me gusta

También hay otro error:
No se pudo iniciar tu aplicación: no-registered-application.

1 me gusta