App nativa Android para explorar el universo Star Wars. Consulta personajes, sus detalles completos y guarda tus favoritos para acceder offline.
- Descripción
- Características
- Stack Tecnológico
- Arquitectura MVVM
- Instalación
- Estructura del Proyecto
- APIs Utilizadas
- Roadmap
- Autor
Star WikiWars es una aplicación Android nativa desarrollada en Kotlin que consume la API pública de Star Wars (SWAPI) para mostrar información detallada de los personajes de la saga. Implementa la arquitectura MVVM con Android Jetpack, Room para persistencia local de favoritos y Retrofit para las llamadas a la API.
- Lista de personajes — Todos los personajes de la saga con imagen y datos básicos.
- Detalle completo — Altura, peso, planeta natal, especie, fechas, afiliaciones y películas.
- Favoritos offline — Guarda personajes con Room para consultarlos sin conexión.
- Imágenes optimizadas — Carga eficiente con Glide y fotos centradas en cualquier dispositivo.
- Listas eficientes — RecyclerView con ListAdapter y DiffUtil para scroll fluido.
| Módulo | Tecnología | Uso |
|---|---|---|
| Lenguaje | Kotlin | Lógica de negocio y UI |
| Arquitectura | MVVM + Android Jetpack | Separación de responsabilidades |
| Persistencia | Room (SQLite) | Almacenamiento de favoritos |
| Red | Retrofit + OkHttp | Llamadas a la API REST |
| Imágenes | Glide | Carga y caché de imágenes |
| UI | Fragments + RecyclerView | Navegación y listas |
| Async | LiveData + ViewModel | Estado reactivo |
┌─────────────────────────────────────────┐
│ UI Layer │
│ CharacterFragment · DetailFragment │
│ FavouriteFragment │
└──────────────┬──────────────────────────┘
│ observa LiveData
┌──────────────▼──────────────────────────┐
│ ViewModel Layer │
│ CharacterDetailViewModel │
└──────────────┬──────────────────────────┘
│
┌───────┴────────┐
│ │
┌──────▼──────┐ ┌──────▼──────┐
│ Repository │ │ Repository │
│ (Network) │ │ (Local) │
└──────┬──────┘ └──────┬──────┘
│ │
┌──────▼──────┐ ┌──────▼──────┐
│ Retrofit │ │ Room │
│ SWAPI │ │ Database │
└─────────────┘ └─────────────┘
- Android Studio Hedgehog o superior
- Android SDK 24+
- Conexión a internet para cargar datos de la API
# 1. Clonar el repositorio
git clone https://github.com/pablo7843/StarWarsApp.git
# 2. Abrir en Android Studio
# File > Open > selecciona la carpeta StarWarsApp
# 3. Sincronizar Gradle
# Android Studio lo hace automáticamente al abrir
# 4. Ejecutar
# Run > Run 'app' (o Shift + F10)No se necesitan claves de API. La app consume SWAPI que es pública y gratuita.
StarWarsApp/
├── app/
│ └── src/main/
│ ├── java/
│ │ └── com.pablo.starwarsapp/
│ │ ├── ui/
│ │ │ ├── CharacterFragment.kt
│ │ │ ├── FavouriteFragment.kt
│ │ │ └── CharacterDetailFragment.kt
│ │ ├── adapters/
│ │ │ ├── CharacterAdapter.kt
│ │ │ └── FavouriteCharacterAdapter.kt
│ │ ├── viewmodel/
│ │ │ └── CharacterDetailViewModel.kt
│ │ ├── data/
│ │ │ ├── local/
│ │ │ │ └── AppDatabase.kt
│ │ │ └── remote/
│ │ │ └── SwapiService.kt
│ │ └── model/
│ │ └── Character.kt
│ └── res/ # Layouts, drawables, strings
├── gradle/
└── build.gradle.kts
| API | URL | Datos |
|---|---|---|
| SWAPI | https://swapi.dev/api/ |
Personajes, especies, planetas |
| Akabab Star Wars API | https://akabab.github.io/starwars-api/ |
Imágenes y datos de películas |
Ambas APIs son públicas y gratuitas, no requieren autenticación.
- Lista de personajes con imágenes
- Detalle completo del personaje
- Favoritos con Room (offline)
- Arquitectura MVVM
- Búsqueda por nombre, especie o planeta
- Filtrado por afiliación (Jedi, Imperio, Rebeldes…)
- Animaciones entre pantallas
- Caché de imágenes para uso offline
Pablo Climent
GALACTIC_DB: CONNECTED · CHARACTERS_LOADED · FAVOURITES: ENCRYPTED_LOCAL