Una aplicación web interactiva que ayuda a los usuarios a descubrir bebidas basadas en sus preferencias de sabor, utilizando un innovador sistema de mapeo en coordenadas X-Y.
El Explorador de Bebidas permite a los usuarios descubrir bebidas basándose en dos ejes principales:
- Eje X: Dulce (izquierda) ↔ Amargo (derecha)
- Eje Y: Potente (arriba) ↔ Ligero (abajo)
-
Mapa Interactivo: Un pad XY que permite a los usuarios explorar bebidas moviendo un marcador.
-
Categorías: Tres tipos principales de bebidas:
- 🍹 Cócteles
- 🍺 Cervezas
- 🍷 Vinos
-
Sistema de Anclaje: Los usuarios pueden marcar bebidas específicas en el mapa para referencia futura.
-
Recomendaciones Dinámicas: Las sugerencias se actualizan en tiempo real según la posición del marcador.
- Interfaz intuitiva con retroalimentación visual inmediata
- Diseño responsivo adaptado a dispositivos móviles y escritorio
- Sistema de etiquetas para acceso rápido a bebidas específicas
- Tooltips informativos para mejorar la navegación
src/
├── app.js # Punto de entrada de la aplicación
├── components/ # Componentes reutilizables
│ ├── tabs.js
│ └── tags.js
├── features/ # Características principales
│ ├── anchors.js
│ ├── drinks.js
│ ├── marker.js
│ └── tooltip.js
├── state/ # Gestión de estado
│ └── store.js
└── utils/ # Utilidades
├── colors.js
├── dom.js
└── events.js
- JavaScript ES6+ (Vanilla)
- CSS3 con diseño responsivo
- HTML5
- Sistema de módulos ES6
- Singleton: Utilizado en el Store y TooltipManager
- Observer: Implementado en el sistema de suscripciones del Store
- Factory: Usado en la creación de elementos DOM
- Manager: Patrón aplicado en la gestión de componentes
class Store {
constructor() {
this.drinksData = {};
this.currentCategory = '';
this.subscribers = new Set();
}
// ...
}- Cache de colores para optimización
- Interpolación de colores para transiciones suaves
- Cálculo de intensidad basado en la posición
- Manejo unificado de eventos táctiles y mouse
- Sistema de prevención de scroll en móviles
- Gestión eficiente de eventos de arrastre
-
Rendimiento
- Cache de colores
- Uso de requestAnimationFrame
- Delegación de eventos
- Lazy loading de componentes
-
Memoria
- Limpieza de event listeners
- Gestión eficiente de referencias
- Reutilización de elementos DOM
-
UX/UI
- Animaciones optimizadas
- Feedback visual inmediato
- Diseño responsivo eficiente
El sistema está diseñado para ser data-driven. Para agregar nuevas bebidas:
- Actualizar
drinks.json:
{
"name": "Nueva Bebida",
"description": "Descripción e ingredientes",
"x": valor, // Posición en eje dulce-amargo (-10 a 10)
"y": valor // Posición en eje potente-ligero (-10 a 10)
}- La UI se actualizará automáticamente sin necesidad de modificar código adicional.
- Añadir nueva categoría en
drinks.json - El sistema de tabs y filtros se actualizará automáticamente
- Sistema de favoritos persistente
- Filtros avanzados por ingredientes
- Modo oscuro/claro
- Soporte para PWA
- Integración con API de recetas
- Sistema de recomendaciones basado en ML
© 2024 Explorador de Bebidas. Todos los derechos reservados.