Disponibilidad de verdad
Cada día muestra cuántas horas quedan y cada hora cuántas plazas. Lo que está completo se ve completo, no se descubre al final.
La cara móvil de Slotly. El viajero elige la actividad, ve qué huecos quedan de verdad, ajusta cuántos son y reserva. El precio se recalcula al vuelo y sale un código de confirmación que el guía comprueba en el punto de encuentro.
Prueba a reservar el bautismo de surf: verás que el jueves hay más huecos y que las 16:00 están completas. Si se te queda pequeña, ábrela a pantalla completa.
Slotly ya resuelve la venta desde el navegador. La app tiene sentido para lo que viene después: el cliente que repite en la misma semana, el que quiere consultar su código sin buscar el email, y el operador que quiere estar en la pantalla de inicio del móvil durante las vacaciones de alguien.
Por eso esta demo no intenta ser la web otra vez. Va directa a lo que se hace con el móvil en la mano.
Cada día muestra cuántas horas quedan y cada hora cuántas plazas. Lo que está completo se ve completo, no se descubre al final.
El total se recalcula al cambiar el número de personas, y el botón de reservar lleva siempre el precio y la hora elegida encima.
Ocho caracteres en monoespaciada, sin letras que se confundan al dictarlas. Es lo que el guía comprueba en la playa.
Slotly corre sobre Postgres con tablas de experiencias, disponibilidad y reservas. La demo usa esa misma estructura —capacidad máxima, mínimo de participantes, horas de cancelación, código de confirmación— para que conectar la API sea sustituir el origen de los datos, no rehacer las pantallas.
Y no hay fotos. Cada actividad lleva una ilustración de degradado marcada como decorativa: poner fotos de sitios reales para un operador que no existe sería vender humo.
“La demo puede ser de mentira. La estructura de datos, mejor que no.”
En casi todas las apps de reserva, el «− 2 +» son dos iconos sin nombre y un número que cambia sin que nadie se entere. Con lector de pantalla es un callejón sin salida: no sabes qué botón es cuál ni qué ha pasado al pulsarlo.
«Añadir una persona» y «Quitar una persona», no «más» y «menos». Y al pulsarlos se anuncia el resultado con el precio ya recalculado.
Al llegar al máximo, el botón se desactiva y dice que no quedan más plazas. Un botón gris sin explicación es una pared.
«Martes 18 de agosto, dos horas disponibles», no «18». Y «16:00, completo», no un texto tachado que el lector no menciona.
Si cambias a una hora con menos plazas y hay que bajar el número de personas, se avisa en lugar de cambiarlo por detrás.
Construyendo las tres demos apareció el mismo problema una y otra vez: react-native-web pone bien los roles, pero no genera los atributos de estado. El resultado es una app que parece accesible en la revisión visual y no lo es con un lector de pantalla.
Se detecta midiendo el HTML que sale, no leyendo el código fuente.
| Lo que escribes | Lo que falta en web | Lo que hay que pasar |
|---|---|---|
accessibilityState={{checked}} | El lector nunca dice «seleccionado» | aria-checked |
accessibilityState={{disabled}} | El botón parece pulsable | aria-disabled |
accessibilityElementsHidden | Se leen los emojis decorativos | aria-hidden |
En los tres casos la solución es la misma y sirve para las tres plataformas: pasar el atributo ARIA directamente, porque React Native lo traduce de vuelta a accessibilityState en iOS y Android.
React Native con Expo, como las otras dos demos. De aquí sale el paquete de las tiendas y esta versión web con HTML real, que es la que estás tocando.
El operador es ficticio, no se cobra nada, no se envía ningún correo y las reservas viven en la memoria del navegador. Para conectarla a Slotly de verdad haría falta:
Cuéntame qué hace hoy tu plataforma y qué querrías que la gente pudiera hacer desde el móvil. Te digo qué merece la pena llevar a una app, qué es mejor dejar en la web y con qué alcance empezar.