MeLi Explorer es una aplicación iOS moderna diseñada para explorar un catálogo curado de productos, con capacidades de búsqueda en tiempo real y persistencia local de favoritos. La aplicación sigue el manifiesto de diseño "The Curated Marketplace", priorizando una estética editorial premium, tipografía clara y una interfaz libre de bordes innecesarios.
La aplicación ha sido construida utilizando las últimas tecnologías de Apple para garantizar rendimiento, mantenibilidad y una experiencia de usuario fluida.
- Lenguaje: Swift 5.9+
- Framework de UI: SwiftUI (Arquitectura declarativa).
- Arquitectura: MVVM Estricto (View → ViewModel → Repository → Model).
- Persistencia: SwiftData (Framework nativo de Apple para persistencia de objetos mediante macros).
- Estado: Macro
@Observable(iOS 17+) para una gestión de estado más eficiente y reactiva. - Concurrencia: Swift Concurrency (
async/await,Task). - Manejo de Imágenes:
AsyncImagecon estados de carga y error personalizados.
- iOS: 17.0 o superior (Requerido por SwiftData y @Observable).
- iPadOS: Compatible desde 17.0.
- Xcode: 15.0+ (Se recomienda Xcode 16 para la mejor experiencia de Preview).
- Dispositivos: Optimizado para iPhone (iPhone 13 en adelante para rendimiento óptimo).
El proyecto sigue una organización modular:
App/: Punto de entrada (@main) y configuración de navegación raíz.Core/:Models/: Entidades de dominio y modelos de persistencia.Repositories/: Lógica de abstracción de datos (JSON/API).Persistence/: Gestores de contexto de SwiftData.
Features/: Carpetas por funcionalidad (Search, Detail, Saved) conteniendo Vistas y ViewModels.Shared/: Componentes reutilizables y el sistema de diseño (Theme).Resources/: Assets y el archivo de datos masivoproducts.json.Tests/: Unit Tests para validación de lógica de negocio.
Para evitar conflictos de archivos .xcodeproj en sistemas de control de versiones y automatizar la configuración, este proyecto utiliza XcodeGen.
Es el archivo de configuración maestro que define cómo se debe generar el proyecto de Xcode. En él se especifican:
- Targets: La propia App y el target de Tests.
- Configuración de Build: Versión de iOS, Swift,
PRODUCT_BUNDLE_IDENTIFIER, etc. - Estructura de Carpetas: Cómo se mapean las carpetas físicas del disco al árbol del proyecto en Xcode.
- Info.plist: Generación automática de plists para evitar archivos basura en el repositorio.
Si añades archivos nuevos al disco o quieres refrescar la configuración de Xcode, simplemente ejecuta en la terminal desde la raíz del proyecto:
xcodegenEsto leerá el project.yml y sobreescribirá MeLiExplorer.xcodeproj con la estructura correcta, vinculando automáticamente todos los archivos Swift y recursos.
La aplicación implementa un sistema de diseño propio basado en:
- No-Line Policy: Uso de jerarquías de color de fondo (
appSurfaceContainerLow) en lugar de bordes para delimitar secciones. - Ghost Border: Bordes sutiles de opacidad baja visibles únicamente en modo oscuro para definir volumen.
- Typography: Escala jerárquica desde
LabelSm(11pt) hastaDisplayMd(44pt) para una lectura editorial. - Glassmorphism: Barras de herramientas con desenfoque de material ultra-fino para dar profundidad.
Se incluyen tests para validar el comportamiento crítico:
- Search Logic: Validación de filtros con menos de 3 caracteres y resultados exactos.
- Persistence: Tests en memoria (In-Memory SwiftData) para asegurar que el guardado y borrado de favoritos funciona sin afectar la base de datos real del usuario.