Lexicon : une application mobile native personnalisable pour votre site Discourse

Bonjour à tous,

Je voulais juste passer un petit mot pour vous annoncer que je viens de rendre public un projet appelé Lexicon avec certains de mes collègues.

Il s’agit d’une application mobile native préconstruite et personnalisable, développée sur la base de l’API Discourse. Nous l’avons créée pour faciliter l’intégration rapide de fonctionnalités de discussion et de messagerie dans d’autres projets mobiles natifs.

Ce projet a été un plaisir à développer, principalement grâce au travail acharné fourni au fil des ans par l’équipe principale de Discourse et la communauté.

Des captures d’écran sont disponibles dans la présentation.

Les personnes techniques peuvent consulter notre Guide de démarrage rapide, qui vous permettra de parcourir ce site Discourse tout en testant l’application !

N’hésitez pas à nous contacter si vous avez des questions, des commentaires ou des retours.

Merci,
Ryan

P.S. Je n’étais pas sûr de savoir dans quelle catégorie publier ce message. N’hésitez pas à le déplacer si une autre catégorie est plus appropriée.

58 « J'aime »

Nous apprécions vraiment la documentation claire, en particulier les aspects architecturaux. Nous avons hâte de l’essayer localement !

Notifications push | :cross_mark::hammer: En cours de développement

Avez-vous un calendrier pour cela ?

8 « J'aime »

C’est génial @RyanKF ! Dans quelle direction les nouveaux développeurs devraient-ils commencer à aider ? J’ai de l’expérience avec les applications mobiles en React.

3 « J'aime »

C’est très cool. On dirait que c’est sous licence MIT ?

1 « J'aime »

Oh, est-ce que c’est censé être un client Discourse natif comme Fig ? Si oui, je l’adore vraiment ! :grinning:

4 « J'aime »

Fig a l’air sympa ! On dirait qu’ils ont vraiment réussi à créer une expérience iOS native pour Discourse.

Voici quelques différences que je remarque…

Prise en charge des tablettes

Fig offre une excellente prise en charge des tablettes. Nous n’avons pas encore abordé cet aspect.

Application mono-site

À l’instar de Discourse Mobile, Fig a adopté l’approche du « gestionnaire de site », vous permettant d’ajouter plusieurs sites Discourse que vous pouvez parcourir. Lexicon, quant à lui, se concentre davantage sur la création d’une application individuelle, éventuellement white-label, pour un site Discourse spécifique.

Lexicon n’est pas une application en soi

De plus, Lexicon est davantage un « modèle d’application » que vous pouvez personnaliser et publier vous-même sur l’App Store ou le Play Store. Fig, en revanche, fournit une application déjà publiée.

Offre premium

Fig propose une offre premium pour certaines fonctionnalités. Lexicon n’a pas d’offre premium.

La seule situation où l’aspect financier intervient est si vous ne trouvez personne pour vous aider à intégrer, personnaliser ou publier Lexicon. Dans ce cas, nous serions ravis de discuter des modalités de collaboration avec nous.

Cela dit, je sais que de nombreux utilisateurs de ce site sont techniques ou semi-techniques. J’espère donc que la documentation est suffisamment détaillée pour guider la plupart des gens dans ce processus sans intervention supplémentaire.

Technologies et prise en charge des appareils

Je fais une hypothèse ici, mais il semble que Fig ait développé son application en Swift, ce qui la rend vraiment native, ce qui est fantastique.

Nous avons construit Lexicon en utilisant React Native, ce qui signifie que nous utilisons JavaScript (il est compréhensible que tout le monde n’apprécie pas cette approche).

Un avantage de notre utilisation de React Native est que nous obtenons automatiquement des applications Android et iOS prêtes à être publiées, avec un taux élevé de réutilisation du code.

La plupart des différences entre Android et iOS dans notre base de code concernent des détails d’apparence et de ressenti, comme un bouton d’action flottant sur Android, contrairement à un bouton dans l’en-tête sur iOS.

11 « J'aime »

C’est sous licence MIT. Et dans tous les autres détails de l’annonce, j’avais oublié d’ajouter un fichier LICENSE au dépôt — merci de l’avoir signalé !

6 « J'aime »

Et vous êtes génial d’avoir déjà envie de contribuer, @4ong !

Frontend

Côté frontend, un domaine où j’aimerais améliorer notre travail est le support des fonctionnalités intégrées dans le contenu brut d’un message.

Outre la prise en charge du contenu Markdown standard du message, nous pouvons également supporter plusieurs fonctionnalités offertes par le balisage personnalisé de Discourse.

Comme vous le savez peut-être déjà, Discourse propose une syntaxe personnalisée pour des fonctionnalités telles que les citations, les bascules (toggles), les dates et même les sondages.

Dans une approche assez courante, nous avons déjà mis en place un support initial pour des fonctionnalités de base comme les intégrations de code, et nous affichons un bloc « <fonctionnalité> n’est pas pris en charge pour le moment » pour les fonctionnalités non encore implémentées.

J’aimerais éliminer complètement ces blocs « non pris en charge » de notre application. Les sondages et les bascules seraient particulièrement bienvenus.

De plus, comme Lexicon fonctionne à partir du contenu brut d’un message, nous contournons le support OneBox. Donc, au minimum, il serait bon d’avoir un support de base pour les aperçus de liens.

Backend

Une fonctionnalité que j’aimerais beaucoup supporter à terme est le deep-linking depuis les e-mails. Ce n’est probablement pas une fonctionnalité triviale à implémenter et nécessiterait probablement de créer un plugin Discourse en Ruby.

Essentiellement, cela permettrait aux utilisateurs de toucher un lien vers un message dans un e-mail provenant de Discourse et d’ouvrir l’application (si elle est installée) directement sur ce message précis via un deep-link via Discourse.

Et si l’application n’est pas installée, ou si l’utilisateur n’est pas sur un appareil mobile, il serait redirigé vers le site comme d’habitude.

Si quelqu’un souhaite s’attaquer à cette tâche, contactez-moi. Ce serait énorme de pouvoir la faire fonctionner.


EDIT : Consultez également la page Fonctionnalités Discourse prises en charge de notre documentation pour voir quelles fonctionnalités ne sont pas encore supportées, et n’hésitez pas à travailler sur l’une d’elles (à l’exception des notifications push, sur lesquelles nous travaillons déjà).

7 « J'aime »

Optimistiquement, dans les prochaines semaines ici — je ne peux pas encore faire de promesses fermes.

Nous avons déjà dépassé le stade de la preuve de concept, mais il reste quelques aspérités à lisser.

De plus, le support de cette fonctionnalité nécessitera l’installation de notre plugin Discourse sur votre site.

Pour donner quelques détails, nous avons développé l’application mobile Lexicon avec Expo, un ensemble incroyable d’outils de construction et de services pour les applications React Native — et il inclut la prise en charge des notifications push.

Cependant, nous n’avons trouvé aucun plugin Discourse existant qui s’intègre au service de push d’Expo, nous avons donc dû en créer un. Heureusement, l’intégration open source existante avec OneSignal est très similaire à ce dont nous avions besoin, ce qui nous a permis d’utiliser leur projet comme point de départ. (Nous sommes très reconnaissants envers pmusaraj pour cela :folded_hands:).

En plus de publier le plugin et de l’intégrer à l’application mobile, nous souhaiterons évidemment mettre à jour la documentation également. Comme Lexicon vous permet de publier votre propre application, il ne s’agit pas simplement de configurer les notifications push pour une seule application sur les boutiques App ou Play.

Nous veillerons donc à ce que les utilisateurs du projet soient correctement guidés tout au long du processus de configuration pour que cela fonctionne simplement.

7 « J'aime »

Merci à tous pour vos retours. N’hésitez pas à me faire part de vos autres questions.

Au fait, j’ai oublié de mentionner que nous avons également une publication sur ProductHunt aujourd’hui qui se porte plutôt bien. Si vous souhaitez nous soutenir, n’hésitez pas à aller jeter un coup d’œil !

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

1 « J'aime »

Ah, d’accord. Merci pour les précisions ! Lexicon semble vraiment intéressant. J’ai hâte de voir le support des tablettes !

Si je voulais créer une plateforme de réseaux sociaux basée sur Discourse, Lexicon serait-il idéal pour cet usage ? En supposant que Lexicon ne soit pas disponible sur les plateformes de bureau à l’avenir, le support de bureau constituerait un obstacle.

1 « J'aime »

C’est très excitant !

Quelques commentaires et questions :

  1. On ne sait pas si DiscourseConnect est pris en charge ; cela vaudrait peut-être la peine de l’ajouter à la page des fonctionnalités prises en charge.

  2. Il existe de nombreuses options pour installer Prose, tant dans le tutoriel que dans la documentation. Je soupçonne que ce contenu pourrait être mieux organisé. J’ai eu du mal à comprendre comment la configuration SSL fonctionnerait si je cherchais à faire les choses aussi simplement que possible en utilisant votre image Docker.

  3. J’aimerais beaucoup l’essayer, mais il n’y a aucun moyen évident de le faire. Si vous rendiez une application disponible pour Meta, nous le ferions :slight_smile:

  4. Les notifications push et le deep linking, comme vous le mentionnez, sont selon moi des fonctionnalités essentielles.

  5. Étant donné la complexité des mises à jour, du déploiement d’applications, de Prose, etc., mon esprit se tourne rapidement vers l’idée d’un service hébergé et pris en charge clé en main payant où vous gérez tout cela. Cela vaudrait peut-être la peine de l’offrir. Je suis curieux de savoir à quoi ressemblerait la tarification.

5 « J'aime »

Et le support des tablettes, n’est-ce pas ? :wink:

1 « J'aime »

c’est un excellent travail

4 « J'aime »

Lexicon dispose-t-il de sa propre communauté Discourse ? Le dépôt GitHub est bien, mais on ne peut pas vraiment discuter de Lexicon de manière appropriée.

5 « J'aime »

Bonjour, il semble y avoir un problème lorsque l’application charge un article contenant des caractères non anglais (par exemple, des caractères chinois 中文). Je soupçonne que cela soit lié à la fonctionnalité de noms Unicode de Discourse (Unicode usernames and group names). J’ai donc ouvert un ticket avec les détails des journaux d’erreur sur le dépôt GitHub :

1 « J'aime »

Super ! As-tu déjà intégré des solutions de modération automatisée ? J’aimerais beaucoup réduire les abus et le spam que je vois dans certains forums.

J’ai essayé de configurer l’application mobile Lexicon en suivant le tutoriel disponible sur Lexicon. Après avoir terminé toutes les étapes et lancé l’application mobile pour une instance Discourse gratuite (https://meta.discourse.org/), j’obtiens ces erreurs respectivement sur le téléphone et dans le journal du terminal.

Erreur du terminal :

Aucun de ces fichiers n’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';
>  7 | import { TopicsSortEnum } from '../generated/server/globalTypes';
    |                                 ^
   8 | import {
  9 |   anchorToMarkdown,
 10 |   errorHandler,
2 « J'aime »

Après avoir configuré le projet, les erreurs suivantes se produisent de manière répétée :

J’ai fourni http:// dans MOBILE_HOST_PRONE, mais une erreur s’affiche toujours lors de l’exécution de l’application sur le téléphone.

1 « J'aime »

Autre erreur également :
Impossible de démarrer votre application : no-registered-application.

1 « J'aime »