Note
🌐 This README is also available in English.
⚠️ Este proyecto está en desarrollo activo.
Algunas funciones pueden cambiar o no estar completamente implementadas todavía.
NotificatorApp es una aplicación multiplataforma desarrollada con Kotlin Multiplatform Platform ( KMP) que ofrece una interfaz intuitiva y moderna para gestionar el envío de notificaciones a través de Google Cloud Messaging. Gracias a su arquitectura, la aplicación está disponible para Android, iOS y Desktop, lo que permite un amplio rango de dispositivos y escenarios de uso.
Este proyecto se ha desarrollado a partir de la plantilla KMMTemplateMM, ampliando su compatibilidad para abarcar diferentes plataformas sin renunciar a la consistencia en la experiencia de usuario. La aplicación actúa como frontend para el servicio de backend provisto por la app Notificator, la cual se encuentra disponible como software de código abierto en GitHub y como imagen de Docker en kmorfo/notificator_app
| Expanded | Medium | Compact |
|---|---|---|
![]() |
![]() |
![]() |
| Expanded | Medium | Compact |
|---|---|---|
![]() |
![]() |
![]() |
- Multiplataforma: Diseñado para Android, iOS y Desktop, aprovechando las ventajas de Kotlin Multiplatform para compartir lógica de negocio entre plataformas, reduciendo el esfuerzo de mantenimiento y acelerando el tiempo de desarrollo.
- Estructura modularizada: Los módulos están organizados en capas para una mejor separación de responsabilidades y escalabilidad.
- Plugins de convenciones (Convention Plugins): Utiliza un enfoque declarativo y centralizado para la configuración de Gradle.
- Modo Offline-first: La aplicación está diseñada para funcionar sin conexión a internet, sincronizando los datos cuando la conexión esté disponible.
- Modo oscuro/claro: Soporte para temas claro y oscuro, adaptándose a las preferencias del usuario y mejorando la experiencia visual.
- Backend Open Source: Se apoya en la aplicación Notificator, lo que garantiza flexibilidad y transparencia al estar completamente abierta a la comunidad.
- Librerías utilizadas:
ktlintpara el formateo del código.Roompara la gestión de bases de datos.Ktorpara el manejo de peticiones HTTP.Koinpara la inyección de dependencias.Compose Navigationpara la navegación en interfaces declarativas.Moko Permissionspara la gestión de permisos multiplataforma.JUnitpara pruebas unitarias.Napieres una librería para logs en Kotlin Multiplatform.
- composeApp: Módulo común y punto de entrada de la aplicación.
- core: Dividido en submódulos:
data: Capa de acceso a datos y repositorios.database: Configuración y gestión de la base de datos.domain: Capa de lógica de negocio y casos de uso.presentation: Lógica de presentación compartida.
- build-logic: Plugins de convenciones para centralizar la configuración de Gradle.
- commonTest: Módulo común para la escritura de pruebas unitarias compartidas.
- gradle: Archivo de configuración de Gradle.
- onboarding: Modulo de Onboarding de la aplicación.
- auth: Modulo de autenticación de la aplicación.
- home: Modulo principal de la aplicación.
Los Convention Plugins son una forma de centralizar y simplificar la configuración de los proyectos Gradle, mejorando la consistencia y reduciendo la redundancia. Entre sus beneficios destacan:
- Consistencia: Garantizan que todas las configuraciones comunes (como la versión de las dependencias o las configuraciones de compilación) se definan en un único lugar.
- Escalabilidad: Facilitan la adición de nuevos módulos sin duplicar configuraciones.
- Mantenibilidad: Hacen que el proyecto sea más fácil de mantener, ya que los cambios en la configuración solo se deben realizar una vez.
La modularización es un enfoque clave para el desarrollo de software escalable y mantenible. Este proyecto está organizado en módulos que ofrecen los siguientes beneficios:
- Separación de responsabilidades: Cada módulo tiene un área de responsabilidad claramente definida, lo que facilita la comprensión y el desarrollo.
- Reutilización de código: Los módulos comúnmente utilizados pueden ser compartidos entre diferentes plataformas y proyectos.
- Pruebas más simples: Las pruebas se pueden realizar de forma aislada en módulos específicos.
- Escalabilidad: Permite a equipos grandes trabajar en diferentes módulos de manera independiente.
- Kotlin Multiplatform configurado en tu entorno de desarrollo.
- Android Studio (preferiblemente la última versión estable).
- Xcode para desarrollo en iOS.
- Tener el backend Notificator en funcionamiento. Puedes clonar el repositorio Notificator ejecutarlo como un contenedor Docker.
- Clona el repositorio de la app Notificator o ejecútalo como un contenedor Docker:
git clone https://github.com/kmorfo/Notificator - Clona este repositorio:
git clone https://github.com/kmorfo/notificatorapp - Sincroniza el proyecto con Gradle para descargar las dependencias.
project-root/
├── composeApp/ # Punto de entrada de la aplicación
├── core/ # Capa de core de la aplicación con funciónes y librerias comunes
│ ├── data/ # Repositorios y acceso a datos
│ ├── database/ # Configuración de Room
│ ├── domain/ # Casos de uso y lógica de negocio
│ └── presentation/ # Lógica de presentación
├── onboarding/ # Onboarding de la aplicación (primera vez)
│ ├── domain/ # Casos de uso y lógica de negocio
│ └── presentation/ # Lógica de presentación
├── auth/ # Pantallas de autenticación, registro y reestablecimiento de contraseña
│ ├── data/ # Repositorios y acceso a datos
│ ├── domain/ # Casos de uso y lógica de negocio
│ └── presentation/ # Lógica de presentación
├── home/ # Pantalla principal de la aplicación
│ ├── data/ # Repositorios y acceso a datos
│ ├── domain/ # Casos de uso y lógica de negocio
│ └── presentation/ # Lógica de presentación
├── build-logic/ # Plugins de convenciones
├── commonTest/ # Pruebas unitarias comunes
└── gradle/ # Configuraciones de Gradle
Las contribuciones son bienvenidas. Por favor, abre un issue o envía un pull request con tus mejoras.
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.






