App para registrar anotaciones sensoriales de café, con sesiones colaborativas tipo Master/Catador, rueda de aromas interactiva, historial de sesiones y dashboard en vivo.
El objetivo no es producir un puntaje único, sino caracterizar el café: qué descriptores aromáticos aparecen, con qué intensidad, cómo se perciben los gustos básicos —dulce, ácido/agrio y amargo— y qué tan idóneo resulta para su propósito.
Inspirada en el flujo de The Coffee Rose de Cafe Imports y en referencias de trabajo sensorial como CoffeeMind.
App publicada: Deploy
- Expo / React Native
- Expo Router
- Firebase Authentication
- Cloud Firestore
- Firebase Hosting
- AsyncStorage para persistencia local de borradores
La estrategia actual busca usar Firestore solo para datos confirmados y colaborativos. Los borradores temporales del Master se guardan localmente en el dispositivo para reducir lecturas y escrituras.
- Abre la app y selecciona Soy Master.
- Crea una cuenta o inicia sesión con email y contraseña.
- Ingresa el nombre de la sesión.
- Crea la sesión.
- La app genera un código de 6 dígitos para compartir con los catadores.
- Agrega cafés al dashboard.
- Cada café puede incluir:
- nombre;
- origen;
- variedad / cultivar;
- proceso;
- fecha de cosecha;
- descripción.
- Si sales del dashboard antes de agregar el café, el formulario se conserva como borrador local en el mismo dispositivo.
- A medida que los catadores evalúan, el dashboard muestra resultados en vivo.
- Desde el historial puedes volver a sesiones previas.
- Las sesiones antiguas pueden archivarse para ocultarlas del historial normal.
- Abre la app y selecciona Tengo un código.
- Ingresa tu nombre y el código de 6 dígitos entregado por el Master.
- Para cada muestra:
- selecciona descriptores en la rueda sensorial;
- asigna intensidad;
- evalúa dulce, ácido/agrio y amargo;
- evalúa idoneidad;
- agrega notas libres.
- Las respuestas se guardan automáticamente.
Firestore se usa para datos colaborativos o definitivos:
sessions/{sessionId}
sessions/{sessionId}/participants/{userId}
sessions/{sessionId}/coffees/{coffeeId}
sessions/{sessionId}/coffees/{coffeeId}/scores/{userId}
joinCodes/{code}
users/{userId}
flavorAttributes/{attributeId}