Institución Educativa Juan Rozo

KoolTrack

Institución Educativa Juan Rozo · Acacías, Meta

Institución Educativa Juan Rozo

El equipo

ZV

Zully Vaneza Vera Morales

Frontend
AC

Andrés Camilo Clavijo Velasco

Base de datos
DS

David Santiago Posada Castañeda

Backend y fullstack
IE

Ivon Eliana Parra Cubillos

Docente líder

Problema 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

Con coordinación, docentes y familias

Fotos digitales listas; faltan las físicas.

Necesidades

Correos instantáneos Reportes Control de acceso

Casos de uso

Asistencia en aula conectada Multicolegio Transporte escolar PAE

Metodología de desarrollo

Scrum

BacklogRequisitos priorizados
PlaneaciónMeta del sprint
SprintAvance diario por roles
RevisiónPrueba y ajuste
EntregaAl servidor
AnálisisReuniones y requisitos
DiseñoMockup de pantallas
DesarrolloSprints y ramas Git
PruebasPiloto con cartón QR

Scrum · Desarrollo

Sprints y commits

Metodología Scrum
frontend backend base de datos Sprint 1 · fusión Sprint 2 · fusión main servidor
154 commits en el repositorio
64 días de trabajo, desde febrero

Fase 2 · Diseño

Mockup

Fase 4 · Pruebas

Prueba piloto

  1. PilotoQR en cartón
  2. Impresoen lámina
  3. 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

EstudianteCarnet QR
FrontendKiosko · JS
Backend PHPkooltrack.com
Base de datosMariaDB
CorreoSMTP
AcudienteRecibe el aviso
De la portería al acudienteen segundos, con cada paso validado.
PHPBackend
MariaDBDatos
Moodle 5.2Plataforma
HTML5Estructura
CSSDiseño
JavaScriptInteracción
GitVersiones
Arch Linux + ApacheServidor físico

Programación backend

Validar y avisar

PHP

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

MariaDB
user
  • id
  • username, firstname, lastname
  • email (acudiente)
qrstudent_codes
  • id
  • userid → user
  • username, hash (SHA-256)
nodes
  • id
  • name, token, location
  • schoolcatid → colegio
nodes_logs
  • id
  • userid → user, nodeid → nodes
  • direction, status, timecreated
notification_rules
  • id
  • eventtype, notify_parent
  • template_id → templates
notification_templates
  • id
  • subject, body_html
  • variables {{studentname}}

Algoritmo en vivo

Así nace un código QR

1 · Entrada

sha256(id + hora + azar)

2 · SHA-256 · se guardan 16

-

3 · Contenido del QR

STU|usuario|firma

validate_scan()
  • Nodo de portería activo
  • Formato STU|usuario|firma
  • Firma en qrstudent_codes
  • Estudiante del colegio
  • Registro en nodes_logs
Para: acudiente

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.

Pregunta Herramientas con tus permisos Tarjeta para confirmar Hecho

Inteligencia artificial · por dentro

Así funciona Clody

NavegadorTexto, voz o foto · Web Speech API
PHP · MoodleColegio, rol y página como contexto
GeminiFunction calling · hasta 6 rondas
Herramientas23 · consultas a MariaDB con permisos
PiperResponde con voz

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

1Carnet
2Código QR
3Escaneo
4Registro
5Correo
6Reporte
Abrir KoolTrack Video de respaldo

Diagrama de flujo

Antes y después de KoolTrack

ANTES
Planilla en papel Se diligencia a mano Llamada, dependiendo la situación Sin historial
Horaso nunca
DESPUÉS
Carnet con QR Escaneo Registro en MariaDB Correo al instante
Segundossiempre

Resultados e impacto

Lo que cambió

0estudiantes con carnet QR
0registros de entrada y salida
0correos enviados a acudientes
  • 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

Ver documento

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
Institución Educativa Juan Rozo

Gracias

La programación al servicio de la seguridad escolar y de las familias.

Preguntas del jurado