Всем привет!
Хочу поделиться 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.


