Skip to content

jormarveg/HeroVerse

Repository files navigation

Heroverse - Explorador del universo Marvel

Heroverse es una aplicación nativa para Android, desarrollada como proyecto académico para el ciclo de DAM. La app permite a los usuarios explorar el universo de Marvel, buscar personajes, ver sus cómics asociados y consultar las últimas noticias a través de un lector RSS.


Funcionalidades Principales

  • Listado y Búsqueda de Personajes: Muestra una parrilla con los personajes de Marvel y permite realizar búsquedas por nombre en tiempo real para filtrar los resultados.
  • Detalle de Personaje: Al seleccionar un personaje, se muestra una pantalla con su biografía y una lista horizontal con las portadas de los cómics más relevantes en los que aparece.
  • Feed de Noticias: Integra un lector de noticias RSS para mostrar las últimas publicaciones oficiales de Marvel, demostrando el parseo de datos XML en segundo plano.
  • Integración Multimedia y Geolocalización:
    • Incluye una sección para visualizar un tráiler de película, aplicando el uso de componentes de vídeo nativos (WebView para YouTube).
    • Presenta un mapa interactivo con una ubicación de filmación icónica y calcula la distancia hasta ella desde la posición del usuario, poniendo en práctica los servicios de geolocalización y la API de Google Maps.

Arquitectura y Stack Tecnológico

El proyecto está desarrollado siguiendo las guías de arquitectura recomendadas por Google, utilizando un enfoque moderno basado en las siguientes tecnologías:

  • Lenguaje: Kotlin 100%.
  • UI: Jetpack Compose para la construcción de toda la interfaz de usuario de forma declarativa.
  • Arquitectura: MVVM (Model-View-ViewModel) para separar la lógica de negocio de la interfaz de usuario.
  • Inyección de Dependencias: Hilt para gestionar las dependencias de la aplicación, principalmente en la capa de red y repositorios.
  • Asincronía: Kotlin Coroutines para manejar todas las operaciones en segundo plano, como las llamadas a la API.
  • Networking:
    • Retrofit: para realizar las peticiones HTTP a la API de Marvel.
    • OkHttp: como cliente HTTP para añadir interceptores que gestionan la autenticación (API Keys, ts, hash).
    • Moshi: para la serialización y deserialización de las respuestas JSON.
  • Navegación: Jetpack Navigation Compose para gestionar el flujo de navegación entre las distintas pantallas.
  • Gestión de Estado: Se utiliza una clase UiState sellada para controlar los estados de la UI (Carga, Éxito, Error), proporcionando una experiencia de usuario fluida.

Estructura del Proyecto

El código está organizado en paquetes según su funcionalidad para facilitar la escalabilidad y el mantenimiento:

  • data: Contiene los modelos de datos de la aplicación (ej: Hero, Comic) y la capa de Repository, que actúa como única fuente de verdad para los datos.
  • network: Incluye la definición del servicio de Retrofit (MarvelApiService), los DTOs (Data Transfer Objects) para mapear las respuestas de la API, y el módulo de Hilt (NetworkModule) que provee las dependencias de red.
  • ui: Agrupa todos los elementos de Jetpack Compose.
    • screens: Contiene los composables de cada pantalla principal.
    • navigation: Define la lógica de navegación y las rutas de la app.
    • theme: Gestiona los colores, tipografía y tema general de la aplicación.
  • viewmodels: Contiene los ViewModel que exponen el estado a la UI y manejan la lógica de negocio.

Configuración

Para ejecutar el proyecto, es necesario añadir las claves de la API de Marvel. Estas deben ser incluidas en el archivo local.properties en la raíz del proyecto:

PRIV_KEY="TU_CLAVE_PRIVADA"
PUB_KEY="TU_CLAVE_PUBLICA"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages