GateControl, control de acceso para ciudadelas

Control de acceso con QR, geocerca, biometría del dispositivo, turnos de guardia y bitácora completa para ciudadelas cerradas.

Tres pantallas de la PWA de GateControl: inicio del inquilino, nueva autorización y detalle con código QR

Qué se necesitaba

Reemplazar el proceso manual de la garita (intercom y llamada telefónica) por uno más rápido, con registro de cada ingreso y salida y con controles de seguridad en los que una ciudadela pueda confiar.

Qué construí

Son cuatro partes que usan la misma base de datos:

  • PWA del residente: se instala en el celular. Con ella pre-autoriza visitas, taxis, deliveries y proveedores, comparte el QR por mensajería y revisa su historial.
  • App de garita: el guardia escanea el QR con la cámara del celular, o digita el código numérico, y registra la entrada o la salida. Hay versión para celular y para computador.
  • Panel administrativo: unidades y habitantes, guardias, garitas, tipos de visita, reportes y la configuración de seguridad.
  • PWA del colaborador: para empleadas domésticas, constructores y otros visitantes recurrentes. El administrador los aprueba y su acceso se renueva automáticamente.

Está hecho con Laravel, Inertia y Vue, con roles y permisos por tipo de usuario.

Geocerca

El administrador dibuja el perímetro de la ciudadela en un mapa (OpenStreetMap) y el servidor comprueba, en cada acción, si la ubicación está dentro o fuera.

  • Residente: la app pide permiso de ubicación y no funciona sin él. Se puede limitar cuántos QR genera por día en total y cuántos desde fuera del perímetro.
  • Guardia: no puede registrar accesos si no está dentro del perímetro, y se guardan las coordenadas de cada registro.
  • Alerta: si el QR se generó fuera del perímetro, el guardia lo ve al validarlo.
  • Configuración: el perímetro y sus reglas se cambian desde el panel.

Biometría del dispositivo

Segundo factor con WebAuthn y passkeys: la huella o el reconocimiento facial del propio celular. El servidor no guarda datos biométricos.

  • Se activa por conjunto residencial y puede ser obligatoria desde el primer ingreso.
  • El administrador define cada cuántas horas se vuelve a pedir, o si solo se pide al iniciar sesión.
  • Desde el panel se puede revocar la biometría de un usuario o eximirlo, por ejemplo a un guardia que usa un celular compartido.

Control de acceso y registro

  • QR de un solo ciclo: cada autorización tiene un identificador único que no sigue una secuencia y un código numérico alterno. Pasa de activa a adentro y a usada, con ventanas de entrada y de salida que fija el administrador.
  • Motivos de rechazo: revocada, ya usada, expirada, o con el tiempo de entrada o de salida vencido. El guardia ve por qué no sirve el código.
  • Turnos de guardia: sin un turno abierto no se puede verificar ni registrar nada, y los turnos se cierran solos al pasar el máximo de horas configurado.
  • Bitácora: cada acceso guarda quién lo registró, cuándo, desde qué dispositivo y dirección, las coordenadas del guardia y el motivo si se rechazó.
  • Roles: administrador, guardia, propietario, inquilino, residente y colaborador, cada uno con sus propias rutas. Los administradores no entran a las rutas de residentes.
  • Validaciones: en un taxi, conductor y pasajero deben ser personas distintas. La identificación y la placa son obligatorias cuando el tipo de visita lo pide.
  • Placa: los datos del vehículo se consultan en segundo plano y solo los ve el guardia.
  • Auditoría: las autorizaciones eliminadas se conservan.
  • Sesión: se maneja con cookies (Sanctum), y para cambiar la contraseña hay que escribir la actual.

Estado

Es un producto propio que sigue en desarrollo. La garita ya no depende de llamadas y queda un historial de cada ingreso. Funciona en hosting compartido, con índices en la base de datos y caché para usar pocos recursos.