皆さん、こんにちは!
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を作成してください。


