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.

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.