El problema
Una empresa de limpieza comercial tiene personal repartido en varias tiendas y centros comerciales. Saber quién llegó, a qué hora y si se quedó en su puesto dependía de listas en papel y de mensajes. No había forma de comprobar que alguien estaba de verdad en la tienda cuando decía estarlo, y cerrar la quincena exigía juntar horas de varias fuentes.
Para qué se hizo
Para que cada operario marque entrada y salida desde su propio celular, solo si está dentro de la tienda asignada, y que la oficina vea en tiempo real quién está trabajando, dónde y desde cuándo, con las horas listas para la nómina.
Qué se construyó
- Marcación con GPS y selfie: el botón de entrada solo funciona dentro del radio de la tienda (la geocerca), y cada marcación guarda la foto, las coordenadas, la precisión del GPS y la hora.
- Varias tiendas por operario: quien rota entre sedes elige cada día en cuál está.
- Vigilancia durante el turno: si la persona sale de la zona con el turno abierto, se genera una alerta; si no vuelve, el turno se cierra solo. También se cierra solo un turno olvidado después de 16 horas.
- Panel de administración: monitor en vivo, tiendas con su radio en un mapa, operarios, turnos con horas por quincena y exportación a CSV, y el historial de alertas.
- Integración con Odoo: el acceso usa el ID del contratista en Odoo, las tiendas y sus coordenadas vienen de Odoo, y cada marcación se envía allá al instante.
- App instalable en la pantalla de inicio del celular, sin pasar por la tienda de aplicaciones.
Cómo se construyó
- Sin servidor propio: la app es un conjunto de archivos que se sirven desde un hosting estático y hablan con una base de datos en Supabase. Menos piezas que mantener y costo casi nulo.
- GPS que no se engaña fácil: una lectura imprecisa no cuenta como “salió”; hacen falta varias lecturas fuera de la zona durante un minuto y medio para confirmarlo. Se resta el margen de error que reporta el propio teléfono y se detectan señales típicas de ubicación falsa.
- Pensado para la batería: en lugar de mantener el GPS encendido todo el turno, pide una lectura cada 30 segundos, y cada 10 solo mientras hay una alerta abierta.
- Probado en campo y simplificado: una versión anterior comparaba cada selfie con una foto de referencia usando reconocimiento facial en el navegador. En la versión 2.1 se retiró para que marcar fuera más rápido; hoy la selfie queda como evidencia para la revisión.
Resultado
[CONFIRMAR] ¿Cuántos operarios y tiendas la usan? ¿Qué cambió en el cierre de quincena o en el control de ausencias? También: las reglas de seguridad de la base de datos en producción están abiertas (ver PARA-ALEJANDRO.md).
Qué puedes ver en la demo
La app completa con una empresa inventada (“Crewline”), 4 tiendas ficticias en Santo Domingo, 6 operarios y 10 días de turnos. La ubicación y la cámara están simuladas: el visitante “está” en la tienda que elige y la selfie es un avatar dibujado, así que no se pide ningún permiso ni se guarda ninguna foto real. Nada sale del navegador: los datos viven en tu propio equipo y se pueden reiniciar borrando los datos del sitio.

