Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MeLi Explorer — iOS App

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.


🛠 Especificaciones Técnicas

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: AsyncImage con estados de carga y error personalizados.

📱 Compatibilidad

  • 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).

🏗 Estructura del Proyecto

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 masivo products.json.
  • Tests/: Unit Tests para validación de lógica de negocio.

⚙️ XcodeGen y project.yml

Para evitar conflictos de archivos .xcodeproj en sistemas de control de versiones y automatizar la configuración, este proyecto utiliza XcodeGen.

¿Qué es project.yml?

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.

¿Cómo regenerar el proyecto?

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:

xcodegen

Esto leerá el project.yml y sobreescribirá MeLiExplorer.xcodeproj con la estructura correcta, vinculando automáticamente todos los archivos Swift y recursos.


🎨 Design System: "The Curated Marketplace"

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) hasta DisplayMd (44pt) para una lectura editorial.
  • Glassmorphism: Barras de herramientas con desenfoque de material ultra-fino para dar profundidad.

🧪 Pruebas Unitarias

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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages