Cómo construir una app web para seguimiento de equipos y accesos
Aprende a planificar, diseñar y construir una app web que registre equipos y derechos de acceso de empleados, con flujos claros para onboarding, transferencias y offboarding.

Define el problema y el alcance para la Versión 1
Antes de elegir una base de datos o dibujar pantallas, aclara qué problema estás resolviendo. Una app de seguimiento de equipos para empleados puede convertirse fácilmente en un proyecto de “rastrear todo”: por eso la Versión 1 debe enfocarse en lo esencial que reduce pérdidas y evita errores de acceso.
Decide qué debes rastrear (y qué puedes ignorar)
Empieza listando los elementos que crean riesgo real o trabajo recurrente:
- Dispositivos: portátiles, sobremesas, tablets, móviles
- Periféricos: monitores, docks, cargadores, auriculares
- Licencias de software: herramientas por asiento que necesitan historial de asignación
- Acceso físico: tarjetas, llaves, pases de parking
Para cada categoría, escribe los campos mínimos que necesitas para operar. Ejemplo: para un portátil, podrías necesitar etiqueta de activo, número de serie, modelo, estado, asignado actual y ubicación. Esto mantiene tu aplicación de gestión de activos anclada en decisiones diarias en lugar de datos “agradables de tener”.
Identifica stakeholders y responsables de decisión
La gestión de equipos y derechos de acceso se sitúa entre equipos, así que aclara quién crea, aprueba y audita cambios:
- IT: inventario de dispositivos, flujo de asignación, devoluciones, reparaciones
- RR.HH.: fechas de inicio, cambios de rol, disparadores de lista de offboarding
- Facilities: llaves, salas, ubicación de asientos
- Seguridad: emisión de credenciales, grupos de acceso, expectativas de cumplimiento
- Managers de equipo: justificación de negocio, aprobaciones, excepciones
No solo recoges requisitos: estás decidiendo quién es responsable cuando algo desaparece o se concede acceso incorrectamente.
Define métricas de éxito que puedas medir
Elige pocas métricas que puedas seguir desde el día uno, como:
- Menos activos “perdidos” y recuperación más rápida
- Menor tiempo de onboarding (solicitud → asignado → listo)
- Menos omisiones de retirada de accesos durante el offboarding
- Rastro de auditoría y evidencias de cumplimiento más claras (quién cambió qué y cuándo)
Bloquea el alcance de la v1 (y aparca el resto)
Una buena v1 entrega seguimiento de inventario fiable para empleados, RBAC básico y un rastro de auditoría simple. Guarda funciones avanzadas —escaneo de códigos de barras/QR, informes profundos e integraciones con HRIS/IdP/ticketing— para posteriores versiones una vez que el flujo central funcione y esté adoptado.
Modela tus datos: empleados, equipos y derechos de acceso
Un buen modelado de datos facilita todo lo demás: flujos, permisos, historial de auditoría e informes. Para una primera versión, mantén pocas entidades, pero sé estricto con identificadores y campos de estado.
Empleados: elige un identificador “fuente de la verdad”
Escoge un identificador único que nunca se vaya a reutilizar. Muchos equipos usan un employee_id proporcionado por RR.HH. o un email corporativo. El email es conveniente, pero puede cambiar; un ID de RR.HH. es más seguro.
Decide de dónde provienen los registros de empleados:
- Sincronización con RR.HH. (mejor a largo plazo): empleados creados/actualizados automáticamente.
- Entrada manual (más rápido para empezar): añade reglas de validación y una bandera de “inactivo/terminado”.
Almacena lo básico necesario para asignaciones: nombre, equipo/departamento, ubicación, manager y estado de empleo. Evita incrustar listas de accesos/equipos directamente en el registro del empleado; módelas como relaciones.
Equipos: normaliza tipos y captura atributos por los que buscarás
Separa items de equipo (activos individuales) de tipos de equipo (portátil, móvil, tarjeta). Cada item debe tener una etiqueta de activo única más cualquier identificador del fabricante.
Atributos comunes a incluir desde el primer día:
- Número de serie, modelo, fecha de compra, fin de garantía
- Condición (ej.: nuevo/bueno/dañado) y estado de ciclo de vida (en stock/asignado/en reparación/retirado)
- Ubicación actual (oficina, sala de almacenamiento, remoto)
Derechos de acceso: trata al acceso como un activo de primera clase
Define tipos de acceso de forma amplia: aplicaciones SaaS, carpetas compartidas, VPN, puertas físicas, grupos/roles de seguridad. Un modelo práctico es Access Resource (por ejemplo, “Org GitHub”, “Unidad Finanzas”, “Puerta HQ”) más Access Grant que vincula a un empleado con ese recurso con un estado (requested/approved/granted/revoked).
Flujos de trabajo: mapea transiciones de estado desde el principio
Antes de construir pantallas, mapea cómo cambian los datos en los flujos principales: asignar, devolver, transferir, reparar y retirar. Si puedes expresar cada flujo como un cambio de estado simple más una marca temporal y “quién lo hizo”, tu app se mantendrá coherente a medida que crezca.
Define roles, permisos y reglas de aprobación
Si tu app rastrea tanto equipos como accesos, los permisos no son “agradables de tener”: son parte del sistema de control. Define roles pronto para poder construir pantallas, flujos y reglas de auditoría alrededor de ellos.
Empieza con roles claros basados en el puesto
Un conjunto práctico para la Versión 1 suele incluir:
- Admin: gestiona la configuración (ubicaciones, tipos de equipo, sistemas de acceso), cuentas de usuario y sobreescrituras de emergencia.
- Técnico IT: asigna/recupera equipos, actualiza el estado de dispositivos (en stock, emitido, perdido), inicia solicitudes de acceso.
- Manager: aprueba solicitudes de acceso para sus reportes directos y confirma pasos de offboarding.
- Auditor: acceso de lectura al historial, informes y evidencias (quién aprobó qué, cuándo y por qué).
- Solo lectura: ve registros sin cambiar nada (helpdesk, mostrador de seguridad, partner de RR.HH.).
Aplica menor privilegio por permiso, no por página
Evita accesos “todo o nada”. Descompón permisos en acciones que se mapean al riesgo:
- Ver perfil del empleado vs editar perfil del empleado
- Asignar equipo vs marcar como perdido/retirado
- Solicitar acceso vs aprobar acceso vs revocar acceso
- Exportar informes (a menudo más sensible de lo que parece)
También considera límites a nivel de campo: por ejemplo, un Auditor puede ver logs de aprobación y marcas temporales pero no detalles de contacto personal.
Añade aprobaciones donde el riesgo sea mayor
La asignación de equipo puede gestionarla IT, pero el acceso privilegiado normalmente necesita aprobación. Reglas comunes:
- Aprobación del manager para accesos elevados (paneles de administración, sistemas de producción, herramientas financieras)
- Acceso acotado en el tiempo con fecha de expiración para proyectos temporales
- Motivo requerido para solicitudes sensibles (almacenado con el registro de aprobación)
Impon separación de funciones
Para acciones sensibles, evita que la misma persona cree y apruebe:
- El solicitante no puede aprobar su propia solicitud.
- La persona que provisiona el acceso no puede ser el único aprobador.
Esto hace que el rastro de auditoría sea creíble y reduce el riesgo de “aprobaciones de trámite” sin ralentizar el trabajo diario.
Diseña los flujos centrales y las listas de verificación
Los flujos son donde una app de seguimiento de equipos y accesos se vuelve realmente útil. En lugar de solo almacenar “quién tiene qué”, céntrate en guiar a las personas con pasos repetibles, propiedad clara, plazos y una siguiente acción obvia.
Empieza con tres listas de verificación centrales
Crea listas paso a paso que cubran los momentos comunes del ciclo de vida:
- Onboarding: solicitar portátil y periféricos, asignar móvil (si procede), conceder apps estándar, confirmar finalización y capturar firma.
- Cambio de rol: revisar accesos actuales, añadir/quitar herramientas para el nuevo rol, opcionalmente intercambiar equipos y documentar al aprobador.
- Offboarding: bloquear/transferir cuentas, programar devolución de equipos, confirmar recepción, borrar/reinstalar imagen y cerrar el caso.
Cada ítem de lista debe tener: un responsable (IT, manager, RR.HH., empleado), un estado (No iniciado → En progreso → Hecho → Bloqueado) y un campo de evidencia (comentario, adjunto o referencia).
Maneja excepciones sin romper el flujo
La vida real raramente es el camino feliz, así que añade “acciones de excepción” que se puedan activar desde cualquier caso:
- Equipo perdido: registra la última posesión conocida, marca como perdido, crea tarea de sustitución y captura detalles del incidente.
- Acceso de emergencia: concede acceso temporal con justificación requerida y expiración automática.
- Préstamos temporales: inicia un préstamo con fecha de devolución, condición esperada y un paso ligero de check-in.
SLAs, recordatorios y revisiones periódicas
Define expectativas de nivel de servicio simples: devolver equipo dentro de X días tras la terminación, reconocer un préstamo en 24 horas, etc. Añade fechas de vencimiento a los ítems de lista y envía recordatorios al responsable actual.
Para derechos de acceso, programa tareas recurrentes como “revisar accesos cada 90 días” para sistemas sensibles. El resultado debe ser una decisión clara: mantener, eliminar o escalar.
Mantén estados y “próxima acción” obvios
Diseña el flujo para que los usuarios nunca duden qué hacer. Cada caso debe mostrar:
- estado actual (p. ej., “Esperando devolución del empleado”)
- próxima acción (frase única y accionable)
- quién es responsable y cuándo vence
Así el proceso avanza sin convertir tu app en una herramienta de gestión de proyectos.
Elige un stack tecnológico y arquitectura de alto nivel
Esta app tocará datos sensibles (quién tiene qué equipo, quién tiene acceso a qué), así que el “mejor” stack suele ser el que tu equipo pueda operar con confianza durante años—especialmente a las 18:00 cuando alguien necesita un cambio urgente de offboarding.
Elige un stack que tu equipo pueda soportar
Escoge un framework que coincida con las habilidades de tu equipo y tu ecosistema existente. Opciones comunes y probadas para una app interna de seguimiento de equipos:
- Node.js + Express (o NestJS): bueno si ya usáis TypeScript y queréis una API flexible.
- Django: potente tooling admin, desarrollo CRUD rápido y reglas de seguridad maduras.
- Ruby on Rails: muy productivo para construir herramientas internas con muchos flujos.
- Laravel (PHP): convenciones sólidas y gran disponibilidad de talento en muchas empresas.
Pase lo que pase, prioriza: buenas librerías de autenticación, migraciones para cambios en la base de datos y una forma clara de implementar RBAC.
Si quieres moverte más rápido en una primera entrega interna, también puedes prototipar (y luego endurecer) este tipo de sistema usando Koder.ai—una plataforma que genera UI React funcional y backend Go + PostgreSQL a partir de descripciones en chat. Es útil para esbozar CRUD, RBAC y flujos de aprobación rápidamente, manteniendo la opción de exportar el código fuente cuando queráis asumir la propiedad directa.
Decide despliegue: VM, plataforma gestionada o contenedores
Tu elección de despliegue afecta más a mantenimiento que a funciones:
- VM en la nube (simple): gestionas actualizaciones del SO, escalado y backups.
- Plataforma gestionada (más fácil de operar): opciones tipo Heroku o servicios de apps en la nube gestionan la mayor parte de las tareas de ops.
- Contenedores (Docker + Kubernetes/ECS) (más flexible): ideal si ya gestionáis infraestructura de contenedores y queréis entornos repetibles.
Para muchos equipos, una plataforma gestionada es la vía más rápida para una aplicación de gestión de activos fiable.
Planifica entornos (dev, staging, production)
Configura tres entornos desde el día uno:
- Dev: para trabajo diario (local + dev compartido).
- Staging: que refleje producción para probar flujos de aprobación e integraciones.
- Producción: con acceso más estricto, backups y monitorización.
Mantén configuración en variables de entorno (URLs de BD, ajustes SSO, buckets de almacenamiento), no en el código.
Esboza un diagrama de arquitectura mínimo
Documenta un diagrama simple para que todos compartan el mismo modelo mental:
- UI: frontend web (server-rendered o SPA) para dashboards y búsqueda.
- API: lógica de negocio para asignaciones, devoluciones y cambios de acceso.
- Base de datos: almacén relacional (a menudo Postgres) para empleados, equipos y concesiones de acceso.
- Almacenamiento de ficheros: opcional para recibos, fotos, formularios firmados.
Este mapa pequeño evita complejidad accidental y mantiene tu arquitectura para herramientas internas comprensible conforme crece.
Diseña la UI: dashboards, búsqueda y páginas de detalle
Una app de seguimiento vive o muere por la rapidez con que la gente puede responder preguntas simples: “¿Quién tiene este portátil?”, “¿Qué falta?”, “¿Qué accesos deben eliminarse hoy?” Diseña la UI alrededor de esos momentos diarios, no alrededor de las tablas de la base de datos.
Empieza con cuatro pantallas clave
Construye estas como tus páginas “base”, cada una con un propósito claro y un layout predecible:
- Perfil del empleado: un lugar único para ver equipos asignados, accesos activos, solicitudes abiertas y una pequeña línea de tiempo de cambios recientes.
- Listado de equipos: tabla estilo inventario con todos los activos, estado (asignado/disponible/retirado), ubicación y última vez visto/actualizado.
- Listado de accesos: sistemas y grupos (p. ej., org GitHub, VPN, nómina) con quién tiene qué, además de fechas de expiración/revisión.
- Cola de solicitudes: aprobaciones y acciones que requieren atención (alta prioridad: setup de nuevo empleado, transferencias, offboarding), ordenadas por urgencia.
Haz que búsqueda y filtros sean de primera clase
Coloca una búsqueda global en la navegación superior y hazla tolerante: nombres, emails, números de serie, etiquetas de activo y nombres de usuario deberían funcionar.
En páginas de listado, trata los filtros como funcionalidad central, no como accesorio. Filtros comunes que rinden mucho:
- Persona, departamento, manager
- Número de serie / etiqueta de activo
- Estado (asignado, pendiente de devolución, perdido, revocado)
- Rangos de fecha (fecha de asignación, última auditoría, fecha de offboarding)
Mantén el estado de filtros en la URL para que los usuarios puedan compartir una vista con un compañero (y volver fácilmente después).
Diseña formularios para prevenir errores
La mayoría de errores ocurren en la entrada de datos. Usa desplegables para departamentos y modelos de equipo, typeahead para empleados y campos obligatorios para todo lo necesario en una auditoría (número de serie, fecha de asignación, aprobador).
Valida en el momento: avisa si un número de serie ya está asignado, si un derecho de acceso entra en conflicto con la política o si una fecha de devolución está en el futuro.
Soporta acciones rápidas (sin buscar)
En las páginas de detalle de empleado y equipo, coloca un conjunto pequeño de acciones principales en la parte visible:
- Asignar equipo
- Devolver equipo
- Revocar acceso
- Generar recibo (PDF o página imprimible para entrega/devolución)
Después de una acción, muestra confirmación clara y el estado actualizado de inmediato. Si los usuarios no confían en lo que ven, volverán a crear hojas de cálculo.
Construye el esquema de la base de datos y el historial de auditoría
Un esquema limpio es lo que hace que una app de seguimiento sea confiable. Para la mayoría de herramientas internas, una BD relacional (PostgreSQL o MySQL) es la mejor opción por la consistencia, restricciones y facilidad para informes.
Empieza con tablas de “estado actual”
Modela las entidades que consultas cada día:
- employees: id, name, email, status (active/offboarding/terminated), department
- equipment: id, asset_tag, serial_number, type, model, status (in_stock/assigned/retired)
- access_resources: id, system_name, resource_name, owner_team
Luego añade tablas tipo join que representan la asignación actual:
- equipment_assignments: id, employee_id, equipment_id, assigned_at, expected_return_at, returned_at (nullable)
- access_grants: id, employee_id, access_resource_id, granted_at, revoked_at (nullable)
Esta estructura facilita responder: “¿Qué tiene Alex ahora mismo?” sin escanear años de historial.
Planea el historial y las aprobaciones como datos de primera clase
Las necesidades de auditoría suelen fallar cuando el historial es una ocurrencia tardía. Crea tablas que registren eventos a lo largo del tiempo:
- assignment_events (o mantener cada fila de asignación inmutable y marcar tiempos de fin)
- access_grant_events (requested/granted/revoked/expired)
- approvals: request_id, approver_id, decision, decided_at, reason
Un patrón práctico es: una fila por cambio de estado, nunca sobrescribir—solo anexar.
Añade restricciones que prevengan datos malos
Usa reglas en la base de datos para evitar registros inconsistentes:
- Restricciones de unicidad en serial_number y asset_tag
- Claves foráneas que requieran employee_id y equipment_id válidos
- Check constraints como
returned_at >= assigned_at - Unicidad parcial para prevenir doble asignación de un ítem (p. ej., solo una asignación “abierta” por equipo)
Decide reglas de retención temprano
Define qué ocurre cuando personas o activos son “eliminados”. Para cumplimiento e investigaciones, prefiere borrados suaves (ej.: deleted_at) y mantén tablas de auditoría append-only. Establece una política de retención por tipo de registro (por ejemplo, mantener historial de acceso y aprobaciones entre 1 y 7 años) y documéntala para que Legal/RR.HH. la aprueben.
Implementa la capa API y la lógica de negocio
Tu API es la “fuente de la verdad” sobre qué está asignado a quién, quién lo aprobó y qué ocurrió cuándo. Una capa API limpia evita que casos límite ensucien la UI y facilita integraciones (escáneres o sistemas de RR.HH.) más adelante.
Define recursos y endpoints (REST o GraphQL)
Empieza modelando los sustantivos y acciones centrales: empleados, equipos, derechos de acceso y flujos (asignación, devolución, offboarding).
Un enfoque REST podría ser:
GET /api/employees,GET /api/employees/{id}GET /api/equipment,POST /api/equipment,PATCH /api/equipment/{id}POST /api/assignments(asignar equipo)POST /api/returns(devolver equipo)GET /api/access-rightsyPOST /api/access-grantsGET /api/workflows/{id}yPOST /api/workflows/{id}/steps/{stepId}/complete
GraphQL también funciona, pero REST suele ser más rápido de implementar para herramientas internas y mantiene el caching/paginación sencillos.
Pon validación en cada escritura
Cada acción de crear/actualizar debe validarse en el servidor, incluso si la UI ya verifica entradas. Ejemplos:
- No se puede asignar equipo si ya está asignado (a menos que soportes transferencias explícitas).
- Un flujo de offboarding no puede marcarse como “completo” si faltan pasos obligatorios.
- Las concesiones de acceso deben respetar sistemas permitidos y reglas válidas de expiración.
Los errores de validación deben ser consistentes y legibles por humanos.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Equipment is already assigned to another employee.",
"fields": { "equipmentId": "currently_assigned" }
}
}
Haz acciones críticas idempotentes
Las acciones de asignar/devolver suelen dispararse desde redes inestables (escaneo móvil, reintentos, doble clic). Añade una clave de idempotencia (o un ID de solicitud determinista) para que solicitudes repetidas no creen registros duplicados.
Soporta paginación, ordenación y errores predecibles
Los endpoints de listas deben incluir paginación y ordenación desde el día uno (por ejemplo: ?limit=50&cursor=...&sort=assignedAt:desc). Mantén códigos de error estables (401, 403, 404, 409, 422) para que la UI responda correctamente—especialmente para conflictos como “ya devuelto” o “se requiere aprobación”.
Asegura autenticación, autorización y logging
La seguridad no es “agradable de tener”: es el sistema de registro de quién puede acceder a qué y cuándo se cambió eso. Unas decisiones deliberadas temprano evitan muchos problemas después.
Autenticación: prefiere SSO, si no, email + MFA
Si la empresa ya usa un proveedor de identidad (Okta, Azure AD, Google Workspace), integra SSO primero. Reduce el riesgo de contraseñas y facilita onboarding/offboarding porque deshabilitar la cuenta en el IdP corta acceso en todas partes.
Si no hay SSO, usa email/contraseña con MFA (apps TOTP o WebAuthn). Evita SMS como factor predeterminado. Añade protecciones básicas como limitación de tasa, bloqueo de cuenta y expiración de sesión.
Autorización: RBAC en la base de datos, aplicado en servidor
Trata permisos como datos, no reglas codificadas. Almacena roles y permisos en la BD (p. ej., Admin, IT, HR, Manager, Auditor) y asígnalos a usuarios y/o equipos.
Aplica autorización en el servidor para cada acción sensible—nunca dependas de botones ocultos en la UI. Por ejemplo:
- Ver los derechos de acceso de un empleado puede estar permitido para RR.HH., pero editarlo puede estar restringido a IT.
- Revocar accesos podría requerir aprobación del manager.
- Ciertos sistemas (nómina, finanzas) solo editables por un grupo pequeño.
Un patrón práctico es una capa de políticas/guards (p. ej., canGrantAccess(user, system)) usada por endpoints API y jobs en background.
Logging de auditoría: haz trazables las acciones sensibles
Añade logs de auditoría para acciones importantes en revisiones e investigaciones:
- Concesiones y revocaciones de acceso
- Cambios de rol y permisos
- Asignaciones/devoluciones de equipo (especialmente ítems de alto valor)
Captura: quién lo hizo, a quién/qué afectó, timestamp, valor previo → nuevo valor y un motivo/comentario cuando esté disponible. Mantén logs append-only.
Transporte, secretos y endurecimiento de sesiones
Usa HTTPS en todas partes. Encripta secretos (keys de API, tokens de integración) en reposo y restringe quién puede leerlos. Ajusta sesiones y cookies seguras (HttpOnly, Secure, SameSite) y separa sesiones de administrador si el nivel de riesgo lo requiere.
Si luego añades integraciones y escaneo, deja esos endpoints detrás de las mismas reglas de auth y registra su actividad también.
Añade escaneo e integraciones (opcional pero valioso)
Cuando los flujos de tracking estén estabilizados, el escaneo y las integraciones pueden quitar mucho trabajo manual. Trátalos como “mejoras” para la v1.1 en lugar de requisitos para la v1—si no, corres el riesgo de construir la app alrededor de sistemas externos que no controlas completamente.
Escaneo de códigos de barras/QR para asignaciones más rápidas
Agregar soporte de códigos es uno de los upgrades con mayor retorno. Un flujo simple—escanea → abre el registro de equipo → asigna al empleado—reduce tiempo de búsqueda y errores tipográficos.
Algunas decisiones prácticas para que funcione:
- Imprime etiquetas duraderas con un ID corto legible bajo el código (útil cuando falla la cámara).
- Soporta tanto escaneo por cámara (móvil) como entrada desde escáner USB (escritorio).
- Decide si los códigos codifican un ID interno (recomendado) o un número de serie (más arriesgado si los formatos varían).
Planifica integraciones con cuidado (RR.HH., directorio, ticketing)
Las integraciones pueden hacer tus datos confiables, pero solo si defines la “fuente de la verdad” por campo.
Integraciones comunes y de alto valor:
- Import RR.HH.: estado del empleado, manager, departamento, fechas de inicio/fin.
- Grupos de directorio: mapear grupos a roles de la app o derechos de acceso (evita auto-conceder accesos sensibles sin aprobaciones).
- Herramientas de tickets: crear o vincular tickets para listas de onboarding/offboarding.
Empieza pequeño: importa perfiles de empleados en modo lectura primero, luego amplía a actualizaciones y sincronización basada en eventos cuando confíes en la calidad.
Jobs en background y revisiones programadas
Las sincronizaciones y revisiones de acceso no deberían depender de clicks manuales. Usa jobs en background para:
- Sincronización nocturna de RR.HH./directorio y alertas de discrepancias
- Revisiones de acceso programadas (p. ej., trimestrales) con recordatorios
- Detección automática de activos “huérfanos” (asignados a empleados inactivos)
Haz visibles los resultados de los jobs: última ejecución, elementos cambiados y fallos con comportamiento de reintento claro.
Exportaciones amigables para auditoría (con controles estrictos)
Los auditores suelen querer CSV. Ofrece exportaciones para asignaciones de equipo, derechos de acceso e historial de aprobaciones, pero protégelas:
- Limita exportaciones a roles autorizados (y regístralas todas).
- Filtra exportaciones por departamento/ubicación cuando proceda.
- Considera enlaces de descarga que expiren y watermarking con solicitante + timestamp.
Si ya tienes una característica de rastro de auditoría, las exportaciones deben incluir el “qué cambió y cuándo”, no solo el estado más reciente. Para guía relacionada, enlaza a /blog/audit-trail-and-compliance.
Pruebas, despliegue y mejora continua
Lanzar una herramienta interna no es “desplegar y olvidar”. Este tipo de sistema toca onboarding, seguridad y operaciones diarias—así que quieres confianza antes del lanzamiento y un plan para seguir mejorando después.
Prueba los flujos que más importan
Enfoca las pruebas en viajes reales de usuario más que en pantallas aisladas. Escribe tests automáticos (y algunos scripts manuales) para los flujos que crean más riesgo y carga:
- Onboarding: asignar portátil/credencial, conceder accesos básicos, confirmar reconocimientos
- Transferencias: mover equipo entre empleados/equipos, ajustar accesos en cambios de rol
- Offboarding: revocar accesos, devolver equipos, manejar excepciones (ítems faltantes, personal remoto)
- Ítems perdidos/dañados: registrar incidente, disparar reemplazo, actualizar rastro de auditoría
Incluye caminos no felices (sin aprobación del manager, ítem ya asignado, acceso ya revocado) para que la app falle con gracia.
Puebla datos de demo realistas para pruebas de usuario
Un entorno de staging con datos creíbles hace que el feedback sea mucho más útil. Pueble:
- departamentos, ubicaciones y centros de coste
- tipos comunes de equipo (modelos de portátil, monitores, llaves, credenciales)
- mezcla de roles (RR.HH., IT, manager, auditor)
- algunos casos desordenados (devoluciones atrasadas, equipo compartido, nombres duplicados)
Esto permite validar búsqueda, informes y casos límite sin tocar producción.
Despliegue gradual y seguro
Empieza con un grupo piloto (un equipo o una oficina). Haz una sesión de formación breve y proporciona una página simple de “cómo hacer X” en la app (por ejemplo, /help/offboarding). Recopila feedback 1–2 semanas y luego expande a más equipos una vez que los flujos centrales sean fluidos.
Monitorea, aprende e itera
Tras el lanzamiento, sigue:
- tasas de error y endpoints lentos
- rutas más usadas (asignar equipo, revocar acceso, offboarding)
- abandonos (formularios iniciados y no completados)
Usa esos datos para priorizar mejoras: validaciones más claras, menos clics, mejores valores por defecto y pequeñas automatizaciones que ahorren tiempo cada día.
Preguntas frecuentes
¿Qué debería incluir la versión 1 de una app de seguimiento de equipos y accesos?
Define qué significa “hecho” para la v1: seguimiento fiable de activos y accesos de alto riesgo, aprobaciones básicas y un rastro de auditoría.
Una v1 práctica suele incluir:
- Empleados, elementos de equipo, recursos de acceso y concesiones
- Flujo de asignar/devolver/transferir + offboarding
- Roles RBAC (Admin/IT/Gerente/Auditor/Lectura)
Deja para después extras como escaneo QR, informes avanzados e integraciones HRIS/IdP/ticketing hasta que el flujo central esté adoptado.
¿Qué tipos de equipos y accesos deberíamos rastrear primero?
Haz seguimiento de lo que genera riesgo de pérdida o errores de acceso, no de todo lo que posees.
Categorías buenas para la v1:
- Dispositivos (portátiles, móviles, tablets)
- Periféricos (docks, monitores, cargadores)
- Licencias (herramientas con asientos que necesitan historial de asignación)
- Acceso físico (tarjetas, llaves)
Para cada categoría, captura solo los campos necesarios para operar a diario (por ejemplo: etiqueta de activo, serial, estado, asignado, ubicación).
¿Cuál es el mejor identificador “fuente de la verdad” para los empleados?
Usa un identificador único que no vaya a reutilizarse. Un employee_id proporcionado por RR.HH. suele ser más seguro que el email, porque las direcciones pueden cambiar.
Si empiezas con entrada manual, añade:
- Validación (sin duplicados)
- Un campo de estado de empleo (activo/offboarding/terminado)
- Una decisión clara sobre la “fuente de la verdad” para cada campo (nombre, manager, departamento)
¿Cómo deberíamos modelar los derechos de acceso para que las aprobaciones y auditorías sean sencillas?
Modela el acceso como datos, no como una casilla en el registro del empleado.
Una estructura práctica:
- Access Resource: lo que se accede (p. ej., “VPN”, “Unidad Finanzas”, “Puerta HQ”)
- Access Grant: la relación con un empleado con estado y marcas temporales (requested/approved/granted/revoked/expired)
Esto facilita aprobaciones, expiraciones y auditorías sin lógica de casos especiales.
¿Qué roles y permisos necesitamos para una v1 segura?
Empieza con roles basados en puestos y luego descompón permisos por acción (principio de menor privilegio).
Roles comunes en v1:
- Admin, Técnico IT, Manager, Auditor, Solo lectura
Permisos por acción habituales:
- Ver vs editar datos del empleado
- Asignar/devolver vs marcar como perdido/retirado
- Solicitar vs aprobar vs revocar acceso
- Exportar informes (a menudo más sensible de lo que parece)
Haz cumplir todos los permisos en servidor, no ocultando botones en la UI.
¿Qué patrones de esquema de base de datos funcionan mejor para asignaciones de equipos?
Usa una base de datos relacional (habitualmente PostgreSQL) con tablas de “estado actual” más historial append-only.
Tablas de estado actual típicas:
employees,equipment,access_resourcesequipment_assignments(conreturned_atnullable)access_grants(conrevoked_atnullable)
Añade restricciones para evitar datos malos:
asset_tagyserial_numberúnicos- Claves foráneas
- Check como
returned_at >= assigned_at - Regla para prevenir múltiples asignaciones abiertas a un mismo ítem
¿Qué debería incluir el rastro de auditoría (y cómo deberíamos almacenarlo)?
Los registros de auditoría fallan cuando se añaden al final: trátalos como datos de primera clase.
Registra al menos:
- Concesiones/revocaciones de acceso
- Cambios de roles/permisos
- Asignaciones/devoluciones de equipos
Cada evento debe capturar quién lo hizo, qué cambió (antes → después), cuándo y el motivo si está disponible. Prefiere registros append-only y borrados suaves para la retención por cumplimiento.
¿Qué decisiones de diseño de API previenen casos límite en asignaciones y devoluciones?
Coloca validación y manejo de conflictos en la API para que la UI no pueda crear registros inconsistentes.
Prácticas clave:
- Valida cada escritura (p. ej., no asignar un equipo ya asignado)
- Usa códigos de error estables (401/403/404/409/422)
- Añade idempotencia para acciones críticas como asignar/devolver (evita duplicados en reintentos)
- Incorpora paginación/ordenación en los endpoints de listado desde el día uno
¿Deberíamos implementar SSO inmediatamente o empezar con email/contraseña?
Si tenéis un IdP (Okta/Azure AD/Google Workspace), SSO suele ser la mejor primera opción porque el offboarding se convierte en un único punto de control.
Si no hay SSO, usa email/contraseña con MFA (TOTP o WebAuthn) y añade:
- Limitación de tasa y umbrales de bloqueo
- Sesiones cortas y bien gestionadas
- Cookies seguras (
HttpOnly,Secure,SameSite)
Sea cual sea el método, mantén RBAC en la base de datos y aplícalo en el servidor.
¿Cuándo deberíamos añadir escaneo de códigos de barras/QR e integraciones — y qué riesgos existen?
Añade escaneo después de que el flujo central esté estable; es un “potenciador”, no un requisito.
Para que el escaneo funcione bien:
- Imprime etiquetas duraderas con un ID legible bajo el código
- Soporta escaneo con cámara (móvil) y lectores USB (escritorio)
- Prefiere codificar un ID interno en lugar del número de serie (los formatos varían)
Para integraciones (HRIS/IdP/ticketing), empieza en modo lectura y define la fuente de la verdad por campo antes de permitir escrituras.