Dexo - Discourse 用のネイティブ iOS クライアント

皆さん、こんにちは!

UIKitとSwiftで作成しているDiscourseフォーラム用のネイティブiOSクライアントDexoをご紹介したいと思います。

スクリーンショット

特徴

  • マルチフォーラム管理 — 1つのアプリ内で複数のDiscourseインスタンスを追加、切り替え、削除できます
  • トピック閲覧 — 無限スクロール対応の最新およびトップのトピックリスト
  • カテゴリとタグ — カテゴリまたはタグでトピックを閲覧
  • トピック詳細 — 画像ビューア、構文ハイライト付きコードブロック、折りたたみ可能なセクションを備えた完全なHTMLコンテンツレンダリング
  • 返信 — トピックまたは特定の投稿に返信する
  • セキュア認証 — RSA暗号化を使用したDiscourseユーザーAPIキーフローを使用します。認証情報はiOSキーチェーンに保存されます
  • 外観 — システム/ライト/ダークモード

予定

  • 通知とプライベートメッセージ
  • トピック作成

テックスタック

コンポーネント 詳細
言語 Swift 5
UIフレームワーク UIKit
最小ターゲット iOS 17.0
アーキテクチャ MVVM + @Observable
データベース SQLite (GRDB)
ネットワーキング Alamofire
画像読み込み SDWebImage

認証の仕組み

DexoはDiscourseユーザーAPIキーの仕様に準拠しています。デバイス上でRSAキーペアを生成し、公開鍵をDiscourseインスタンスに送信して認証を行い、結果として得られたAPIキーをiOSキーチェーンに安全に保存します。パスワードはデバイスに保存されません。

TestFlight

ソースコード

このプロジェクトは完全にオープンソースです。

ソースからのビルド

Xcode 16以降とmiseが必要です。

make setup    # ツールをインストールし、依存関係を取得し、Xcodeプロジェクトを生成

その後、dexo.xcodeprojを開き、開発チームを選択して実行します。

フィードバック

これはまだ開発途中のものです。
皆さんのフィードバック、機能リクエスト、バグレポートをお待ちしています。
ここで返信していただくか、GitHubでIssueを作成してください。

「いいね!」 8