KoolTrack
Institución Educativa Juan Rozo · Acacías, Meta
Institución Educativa Juan Rozo
El equipo
Andrés Camilo Clavijo Velasco
Base de datosDavid Santiago Posada Castañeda
Backend y fullstackIvon Eliana Parra Cubillos
Docente líderProblema identificado
Asistencia tradicional
Registro manual en papel
Lento, difícil de consultar y con errores humanos.
Padres sin saber
Desconocían a qué hora entraban o salían sus hijos.
Sin trazabilidad
No había historial confiable de la asistencia.
Seguridad escolar
El colegio necesitaba saber quién está dentro.
Registrar en tiempo real quién entra y quién sale.
Objetivo
Diseñar e implementar una plataforma que registre el ingreso y la salida de los estudiantes con códigos QR, guarde la información en una base de datos centralizada y notifique automáticamente a los acudientes por correo.
La solución
Un carnet. Un escaneo. Una notificación inmediata.
KoolTrack
- Portería con lectura de QR en segundos
- Correo instantáneo al acudiente
- Reportes y control para coordinación
- Asistencia en aula conectada
- Multicolegio en una plataforma
Fase 1 · Análisis
Todo comenzó con una necesidad
Reuniones
Fotos digitales listas; faltan las físicas.
Necesidades
Casos de uso
Metodología de desarrollo
Scrum
Scrum · Desarrollo
Sprints y commits
Fase 2 · Diseño
Mockup
Fase 4 · Pruebas
Prueba piloto
- PilotoQR en cartón
- Impresoen lámina
- Porta carnetuso diario
Pantallas simples para cada usuario.
Frontend · AJAX y JSON
NODO
// El lector envía el QR al servidor como JSON. const peticion = { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ token: TOKEN, qr: qr }) }; // Hasta 3 intentos si la red falla. const { data } = await fetchJsonWithTimeout( API_URL, peticion, 8000); // Respuesta del servidor: { "status": "success", "user": { "name": "Estudiante", "course": "6-1", "time": "06:42:10 AM" } }
Arquitectura del sistema
Del carnet al acudiente
Programación backend
Validar y avisar
local/nodes/classes/manager.php
public static function validate_scan($token, $qr) { // El nodo de portería debe existir y estar activo. $node = $DB->get_record('local_nodes', ['token' => $token, 'active' => 1]); if (!$node) { return ['status' => 'error']; } // QR del carnet: STU|usuario|firma SHA-256. $data = generator::validate_qr($qr, $node->schoolcatid); // Se guarda el registro con la hora exacta. $DB->insert_record('local_nodes_logs', $log); }
Consulta en MariaDB
SELECT l.userid, l.direction, l.timecreated, n.name AS punto FROM mdl_local_nodes_logs l JOIN mdl_local_nodes n ON n.id = l.nodeid WHERE l.timecreated BETWEEN :inicio AND :fin AND l.status = 'success';
Correo al acudiente en ~1 segundo
// Cola sin duplicados (eventhash único); un worker // la envía cada segundo, hasta 5 intentos. self::enqueue_scan_notification($snapshot);
Modelo de datos
Base de datos
- id
- username, firstname, lastname
- email (acudiente)
- id
- userid → user
- username, hash (SHA-256)
- id
- name, token, location
- schoolcatid → colegio
- id
- userid → user, nodeid → nodes
- direction, status, timecreated
- id
- eventtype, notify_parent
- template_id → templates
- id
- subject, body_html
- variables {{studentname}}
Algoritmo en vivo
Así nace un código QR
sha256(id + hora + azar)
2 · SHA-256 · se guardan 16-
3 · Contenido del QRSTU|usuario|firma
- Nodo de portería activo
- Formato STU|usuario|firma
- Firma en qrstudent_codes
- Estudiante del colegio
- Registro en nodes_logs
Inteligencia artificial
Clody
El asistente de KoolTrack, dentro de la plataforma
Responde con datos reales
Quién está dentro, ausentes, tardes y resúmenes por curso.
Cambios que tú confirmas
Excepciones, jornadas y plantillas, solo con tu visto bueno.
Lee fotos y PDF
Listas de llegada, excusas médicas y estudiantes nuevos.
Habla y escucha
Conversación por voz, con una voz que corre en nuestro servidor.
Sabe dónde estás
Conoce tu colegio y tu página, y te lleva a cualquier pestaña.
Privado
Respeta los permisos de tu rol; tu historial es solo tuyo.
Inteligencia artificial · por dentro
Así funciona Clody
Herramientas
12 de consulta y 11 de acción en PHP; cada una revisa rol y colegio.
Nada se hace solo
Toda acción queda pendiente 30 min y se ejecuta solo al confirmar.
Voz propia: Piper
Red neuronal (.onnx) en nuestro servidor; respaldo: voz de Gemini.
Demostración en vivo
Diagrama de flujo
Antes y después de KoolTrack
Resultados e impacto
Lo que cambió
- El registro de asistencia es automático y toma segundos.
- Los acudientes reciben la información al instante.
- Coordinación decide con reportes confiables.
Responsabilidad
Uso ético de las TIC
Ley 1581 de 2012
Tratamiento de datos personales de menores con fines educativos.
Datos protegidos
Cada usuario solo ve lo de su colegio y sus cursos.
Autorización institucional
Uso aprobado por la institución y conocido por las familias.
Desarrollo propio
Código escrito por el equipo sobre Moodle, software libre.
Recursos con licencia
Iconos y fuentes libres y la plantilla oficial del concurso.
Seguridad
QR firmados, conexión cifrada y claves fuera del código.
Lo que sigue
KoolTrack 2.0
Innovación
- Identificación biométrica
- Aplicación móvil para acudientes
- Registro sin internet que se envía al volver la conexión
- Analítica predictiva y alertas tempranas
Gracias
La programación al servicio de la seguridad escolar y de las familias.