Food Delivery Experience. Redefined.
Aplicación nativa iOS desarrollada con SwiftUI y Clean Architecture.
Ver Demo
·
Funcionalidades
·
Instalación
EaToo es una aplicación de delivery móvil moderna y robusta. Construida enteramente en SwiftUI, la app demuestra el uso profesional del patrón MVVM, concurrencia estructurada (async/await) y geolocalización avanzada.
La aplicación funciona como un cliente "Full Stack", consumiendo una API RESTful propia alojada en servidores de Alwaysdata, lo que permite gestionar usuarios, restaurantes, pedidos y menús dinámicos en tiempo real.
Integración profunda con Google Maps SDK (v10.6.0) para ofrecer una experiencia visual inmersiva:
- Radar de Proximidad: Visualización de radio de alcance de 500m mediante
GMSCircle. - Marcadores Dinámicos: Los pines del mapa se renderizan en tiempo real mostrando la foto de cada restaurante usando
UIGraphicsImageRenderer. - Rastreo en Vivo: Seguimiento preciso de la ubicación del usuario mediante
CoreLocation.
- Carrito Inteligente: Lógica de negocio local (
GestorCarrito) para calcular totales, impuestos y validar items. - Persistencia Híbrida: Uso de
UserDefaultspara historial local rápido y sincronización con base de datos remota MySQL para seguridad. - Checkout Flow: Pasarela de pago simulada con validación de métodos y confirmación de órdenes.
Un sistema de gestión de contenido completo integrado en la propia app:
- CRUD Completo: Crear, leer, actualizar y eliminar restaurantes y productos.
- Gestión de Usuarios: Administración de perfiles y permisos directamente desde la interfaz móvil.
- Networking Asíncrono: Todas las operaciones de escritura utilizan
async/awaitconURLSessionpara una experiencia fluida sin bloqueos.
El proyecto sigue una arquitectura MVVM (Model-View-ViewModel) estricta para separar la lógica de negocio de la interfaz de usuario, facilitando la escalabilidad y el testing.
- Tipografía: Sistema de fuentes personalizado utilizando la familia Inter (Regular, Bold, Light) inyectado globalmente vía
EnvironmentValues. - UI Components: Uso de
ViewModifierpersonalizados para estandarizar botones (PillButton) y tarjetas.
| Componente | Tecnología | Descripción |
|---|---|---|
| Mobile Client | SwiftUI 3 / Swift 5 | Desarrollo 100% nativo. |
| Maps Engine | Google Maps SDK | Versión 10.6.0 gestionada vía SPM. |
| Backend | PHP 8 / MySQL | API REST hospedada en alwaysdata.net. |
| Networking | URLSession | Peticiones multipart/form-data y decodificación JSON (Codable). |
Sigue estos pasos para ejecutar el proyecto en tu entorno local (macOS).
- Xcode 13.0+
- iOS 15.0+
-
Clonar el repositorio
git clone [https://github.com/tu-usuario/EaToo.git](https://github.com/tu-usuario/EaToo.git)
-
Abrir el Proyecto Abre el archivo
EaToo.xcodeproj. Xcode comenzará automáticamente a resolver los paquetes Swift (Google Maps SDK). -
Configuración de API Key Para que los mapas carguen correctamente, debes añadir tu propia API Key en
AppDelegate.swift.// Ubicación: EaToo/Api/AppDelegate.swift GMSServices.provideAPIKey("TU_GOOGLE_MAPS_API_KEY")
-
Compilar y Ejecutar Selecciona un simulador (ej. iPhone 14 Pro) y presiona
Cmd + R.

