Dexo - Un client natif iOS pour Discourse

Bonjour à tous !

J’aimerais partager Dexo, un client natif iOS pour les forums Discourse que je construis avec UIKit et Swift.

Captures d’écran

Fonctionnalités

  • Gestion Multi-Forums — Ajouter, basculer entre et supprimer plusieurs instances Discourse dans une seule application
  • Navigation dans les Sujets — Listes des sujets Récents et Meilleurs avec défilement infini
  • Catégories & Tags — Parcourir les sujets par catégorie ou tag
  • Détail du Sujet — Rendu complet du contenu HTML avec visionneuse d’images, blocs de code avec coloration syntaxique et sections réductibles
  • Répondre — Répondre aux sujets ou à un message spécifique
  • Authentification Sécurisée — Utilise le flux de clé d’API utilisateur de Discourse avec chiffrement RSA ; les informations d’identification sont stockées dans le Trousseau d’iOS (iOS Keychain)
  • Apparence — Mode Système / Clair / Sombre

Prévu

  • Notifications et messages privés
  • Création de sujets

Pile Technologique (Tech Stack)

Composant Détail
Langage Swift 5
Framework UI UIKit
Cible Minimale iOS 17.0
Architecture MVVM + @Observable
Base de données SQLite (GRDB)
Réseau (Networking) Alamofire
Chargement d’Images SDWebImage

Comment fonctionne l’authentification

Dexo suit la spécification de la Clé d’API Utilisateur de Discourse. Il génère une paire de clés RSA sur l’appareil, envoie la clé publique à votre instance Discourse pour autorisation, et stocke la clé API résultante de manière sécurisée dans le Trousseau d’iOS (iOS Keychain). Aucun mot de passe n’est stocké sur l’appareil.

TestFlight

Code Source

Le projet est entièrement open source :

Construire à partir des Sources

Nécessite Xcode 16+ et mise :

make setup    # Installe les outils, récupère les dépendances, génère le projet Xcode

Puis ouvrez dexo.xcodeproj, sélectionnez votre équipe de développement et exécutez.

Retour d’information

Ceci est toujours un travail en cours.
J’aimerais avoir vos retours, demandes de fonctionnalités ou rapports de bugs.
N’hésitez pas à répondre ici ou à ouvrir un ticket sur GitHub.

12 « J'aime »