Volver a proyectos
Mobile

Digidex Mobile

Aplicación mobile Flutter con Cleach Architecture

DartHTMLRubySwiftKotlin
Digidex Mobile

DigiDex Mobile

Enciclopedia de Digimon con estilo cyberpunk para Android e iOS, construida con Flutter, Clean Architecture y BLoC.

Companion app del proyecto web DigiDex (SvelteKit + FastAPI).

Demo web

Capturas

Home (Dark) Detail (Dark) Home (Light) Detail (Light)

Sobre el proyecto

DigiDex Mobile es una app que permite explorar el catálogo completo de más de 1400 Digimon con perfiles detallados, skills, campos, cadenas de evolución y un sistema de favoritos local.

La app consume la API de DigiDex (FastAPI), que a su vez obtiene datos de la Digi-API externa.

Arquitectura

Clean Architecture con 3 capas y dependencias hacia el interior:

Presentation (BLoCs, Pages, Widgets)
       |
Domain (UseCases, Entities, Repository interfaces)
       ^
Data (Repository impls, DataSources, Models)
  • Domain no tiene dependencias externas — solo Dart puro + Equatable
  • Data implementa las interfaces de Domain usando Dio (HTTP) y Hive (almacenamiento local)
  • Presentation consume Domain a través de BLoCs que transforman eventos en estados

Funcionalidades

  • Listado infinito con scroll lazy loading y grid responsive adaptativo
  • Búsqueda en vivo con debounce (300ms) y cancelación automática
  • Perfil de Digimon con imagen animada (flotante + scanner frame), badges, descripción, skills y evoluciones
  • Favoritos con persistencia local via Hive
  • Tema claro/oscuro/sistema con persistencia de preferencia
  • Navegación con bottom tab bar (Home, Favorites, About) y transiciones fade+scale
  • Accesibilidad WCAG AA — Semantics en elementos interactivos, contraste 4.5:1+, tap targets 48x48dp

Tech Stack

Componente Tecnología
Framework Flutter + Dart
Arquitectura Clean Architecture
Estado BLoC (flutter_bloc)
Inyección de dependencias get_it
HTTP Dio
Almacenamiento local Hive
Navegación go_router
Imágenes cached_network_image
Tipografía google_fonts (Orbitron + JetBrains Mono)
Testing flutter_test, bloc_test, mocktail

Estructura del proyecto

lib/
├── core/
│   ├── constants/      # URL de API, timeouts
│   ├── di/             # Registro de dependencias (get_it)
│   ├── error/          # Excepciones personalizadas
│   ├── router/         # Configuración go_router
│   └── theme/          # Temas Material 3, colores, tipografía
├── data/
│   ├── datasources/    # Dio (remoto) + Hive (local)
│   ├── models/         # DTOs con fromJson/toJson/toEntity
│   └── repositories/   # Implementaciones de repositorios
├── domain/
│   ├── entities/       # Entidades de negocio (Dart puro)
│   ├── repositories/   # Interfaces abstractas
│   └── usecases/       # Casos de uso (un call() por clase)
└── presentation/
    ├── blocs/          # DigimonList, DigimonDetail, Search, Favorites, Theme
    ├── pages/          # Home, Detail, Favorites, About, Splash, Shell
    └── widgets/        # DigiCard, NeonContainer, TypeBadge, ShimmerCard

BLoCs

BLoC Responsabilidad
DigimonListBloc Listado paginado con infinite scroll
DigimonDetailBloc Perfil completo de un Digimon
SearchBloc Búsqueda con debounce restartable
FavoritesBloc Gestión de favoritos (Hive)
ThemeBloc Cambio de tema con persistencia

API Backend

La app se conecta a la API de DigiDex desplegada:

Endpoint Descripción
GET /api/v1/digimon Listado paginado
GET /api/v1/digimon/search Búsqueda por nombre
GET /api/v1/digimon/{id} Perfil detallado

Testing

34 tests unitarios cubriendo:

  • Modelos — Parsing JSON, conversión a entidades, manejo de campos opcionales
  • Casos de uso — Delegación correcta a repositorios
  • BLoCs — Transiciones de estado, manejo de errores, infinite scroll, debounce

Repositorios relacionados

Repo Descripción
DigiDex Web frontend (SvelteKit) + Backend API (FastAPI)