Envigite.dev
Menu
InicioHabilidadesProyectosTrayectoria
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

Blur Background
Captura móvil 0
Blur Background
Captura móvil 1
Blur Background
Captura móvil 2
Blur Background
Captura móvil 3
Blur Background
Captura móvil 4
Blur Background
Captura móvil 5

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.