Dexo - Un cliente nativo para iOS para Discourse

¡Hola a todos!

Me gustaría compartir Dexo, un cliente nativo de iOS para foros de Discourse que he estado desarrollando con UIKit y Swift.

Capturas de Pantalla

Características

  • Gestión Multi-Foro — Añadir, cambiar y eliminar múltiples instancias de Discourse en una sola aplicación
  • Exploración de Temas — Listas de temas Últimos y Principales con desplazamiento infinito
  • Categorías y Etiquetas — Explorar temas por categoría o etiqueta
  • Detalle del Tema — Renderizado completo del contenido HTML con visor de imágenes, bloques de código con resaltado de sintaxis y secciones colapsables
  • Responder — Responder a temas o a una publicación específica
  • Autenticación Segura — Utiliza el flujo de Clave de API de Usuario de Discourse con cifrado RSA; las credenciales se almacenan en el Llavero de iOS
  • Apariencia — Modo Sistema / Claro / Oscuro

Planeado

  • Notificaciones y mensajes privados
  • Creación de temas

Pila Tecnológica

Componente Detalle
Lenguaje Swift 5
Framework de UI UIKit
Objetivo Mínimo iOS 17.0
Arquitectura MVVM + @Observable
Base de Datos SQLite (GRDB)
Redes Alamofire
Carga de Imágenes SDWebImage

Cómo Funciona la Autenticación

Dexo sigue la especificación de Clave de API de Usuario de Discourse. Genera un par de claves RSA en el dispositivo, envía la clave pública a tu instancia de Discourse para su autorización y almacena la clave API resultante de forma segura en el Llavero de iOS. No se almacenan contraseñas en el dispositivo.

TestFlight

Código Fuente

El proyecto es totalmente de código abierto:

Compilar desde el Código Fuente

Requiere Xcode 16+ y mise:

make setup    # Instala herramientas, obtiene dependencias, genera proyecto Xcode

Luego abre dexo.xcodeproj, selecciona tu equipo de desarrollo y ejecuta.

Comentarios

Esto todavía es un trabajo en progreso.
Me encantaría escuchar tus comentarios, solicitudes de características o informes de errores.
Siéntete libre de responder aquí o abrir un issue en GitHub.

8 Me gusta