Dexo — нативный клиент для Discourse на iOS

Всем привет!

Хочу поделиться Dexo — нативным iOS-клиентом для форумов Discourse, который я разрабатываю с использованием UIKit и Swift.

Скриншоты

Главная Детали темы Категории

Возможности

  • Управление несколькими форумами — Добавление, переключение между несколькими экземплярами Discourse и их удаление в одном приложении
  • Просмотр тем — Списки последних и популярных тем с бесконечной прокруткой
  • Категории и теги — Просмотр тем по категории или тегу
  • Детали темы — Полная отрисовка HTML-контента с просмотрщиком изображений, блоками кода с подсветкой синтаксиса и раскрывающимися секциями
  • Ответы — Ответ на тему или на конкретный пост
  • Безопасная авторизация — Использует поток API-ключа пользователя Discourse с шифрованием RSA; учётные данные хранятся в связке ключей iOS (Keychain)
  • Внешний вид — Системный / Светлый / Тёмный режим

В планах

  • Уведомления и личные сообщения
  • Создание тем

Стек технологий

Компонент Детали
Язык Swift 5
UI-фреймворк UIKit
Минимальная версия iOS 17.0
Архитектура MVVM + @Observable
База данных SQLite (GRDB)
Сеть Alamofire
Загрузка изображений SDWebImage

Как работает авторизация

Dexo следует спецификации API-ключа пользователя Discourse.
Приложение генерирует пару ключей RSA на устройстве, отправляет открытый ключ вашему экземпляру Discourse для авторизации и безопасно сохраняет полученный API-ключ в связке ключей iOS.
Пароли на устройстве не хранятся.

TestFlight

Исходный код

Проект полностью открыт:

Сборка из исходного кода

Требуется Xcode 16+ и mise:

make setup    # Установка инструментов, загрузка зависимостей, генерация проекта Xcode

Затем откройте dexo.xcodeproj, выберите свою команду разработчика и запустите сборку.

Обратная связь

Это всё ещё работа в процессе.
Буду рад услышать ваши отзывы, предложения по новым функциям или сообщения об ошибках.
Не стесняйтесь отвечать здесь или открыть issue на GitHub.

14 лайков