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

El control era manual

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 con QR y una plataforma que avisa sola.

KoolTrack

  • Portería con lectura de QR en segundos
  • Correo instantáneo al acudiente
  • Reportes y control para coordinación
  • Asistencia en aula conectada
  • Varios colegios en una plataforma

Metodología de desarrollo

Trabajamos con 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

Fase 1 · Análisis

Levantamiento de requisitos

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

Fase 2 · Diseño

Mockup

Fase 4 · Pruebas

Prueba piloto

  1. PilotoQR en cartón
  2. Impresoen lámina
  3. Porta carnetuso diario

Diagrama de flujo

Antes y después

ANTES
Planilla en papel Se anota a mano Llamada, si acaso Sin historial
Horaso nunca
DESPUÉS
QR en porta carnet Escaneo Registro en MariaDB Correo al instante
Segundossiempre

Fase 3 · Desarrollo

Sprints y ramas

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

Arquitectura del sistema · toca cada bloque

Del carnet al acudiente

EstudianteCarnet QR
FrontendKiosko · JS
Backend PHPkooltrack.com
Base de datosMariaDB
CorreoSMTP
AcudienteRecibe el aviso
Toca un bloquepara ver qué pasa en cada paso.
PHPBackend
MariaDBDatos
Moodle 5Plataforma
HTML5Estructura
CSSDiseño
JavaScriptInteracción
GitVersiones
Arch Linux + ApacheServidor físico

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 · pruébalo en vivo

Así nace un código QR

Usuario del estudiante
1 · Entrada

sha256(id + hora + azar)

2 · Firma SHA-256

-

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

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';

Envío inmediato del correo

// Sale en el momento del escaneo, sin cola.
$mail = self::build_message_mailer($acudiente,
    $asunto, $texto);
return $mail->send();

Pantallas simples para cada usuario.

Frontend · AJAX y JSON

Portería

// 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" } }

Demostración en vivo

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

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