Mobile
Minecraft Repository Android
Aplicación nativa Android diseñada bajo Clean Architecture y MVVM, con estrategia Offline-First y gestión de estados asíncronos.
Rol
Android Engineer
Año
2023
Stack
8+ Techs
Estado
En Producción
Stack Tecnológico
KotlinAndroid SDKMVVMClean ArchitectureDagger HiltCoroutines & FlowRoom DatabaseRetrofit
La Historia
Todo desarrollador Android pasa por una fase donde mete todo el código en la 'MainActivity'. Yo quería graduarme de esa etapa. Este proyecto nació de mi intención deliberada de dominar la ingeniería de software móvil moderna. Usé la API de Minecraft como excusa, pero mi verdadero objetivo era implementar una arquitectura que soportara escalabilidad real, no solo "que funcionara".
Me obsesioné con el desacoplamiento. Implementé Clean Architecture estricta, utilizando Dagger Hilt para la inyección de dependencias y asegurándome de que la UI no supiera nada de dónde vienen los datos. Para la red, orquesté Retrofit con Corrutinas de Kotlin, evitando bloquear el hilo principal (Main Thread) y garantizando una experiencia de usuario (UX) sedosa, incluso con conexiones inestables.
Lo más gratificante fue implementar la persistencia local con Room. Logré que la aplicación fuera "Offline-First", permitiendo a los usuarios acceder a sus recursos guardados sin internet. Hoy, este repositorio no es solo una app de skins; es mi plantilla de referencia ('blueprint') sobre cómo se debe estructurar una aplicación Android profesional, modular y testeable.
Galería












El Desafío
- Evitar los 'ANR' (Application Not Responding) gestionando operaciones pesadas de I/O en hilos secundarios mediante Dispatchers de Corrutinas.
- Implementar el patrón Repository para actuar como una única fuente de verdad, arbitrando entre la API remota y la base de datos local (Room).
- Configurar Dagger Hilt para inyectar dependencias de red y base de datos, eliminando el acoplamiento fuerte entre componentes.
- Manejar eficientemente el ciclo de vida de Android para prevenir fugas de memoria (Memory Leaks) al rotar la pantalla o cambiar de contexto.
- Optimizar el rendimiento del RecyclerView utilizando DiffUtil para renderizar solo los elementos que cambiaron en la lista.
La Solución
- Arquitectura MVVM (Model-View-ViewModel) robusta
- Sincronización de datos en tiempo real (REST API)
- Persistencia de datos local (Offline mode) con Room
- Inyección de Dependencias escalable con Dagger Hilt
- Gestión asíncrona segura con Kotlin Coroutines
- UI Adaptativa con ConstraintLayout y Material Design
- Manejo de estados de carga y error en la UI
Ingeniería & Arquitectura
Clean Architecture
Separación estricta en capas (Data, Domain, Presentation) para que la lógica de negocio sea independiente del framework de Android.
Repository Pattern
Abstracción de las fuentes de datos. El ViewModel solicita datos al Repositorio sin importarle si vienen de la nube (Retrofit) o del disco (Room).
Dependency Injection
Uso de Dagger Hilt para proveer instancias singleton de la base de datos y clientes de red, facilitando el testing y la modularidad.