← Volver a proyectos
Proyecto 01 · En producción

Sistema de credencialización SNTE Sección 16

Plataforma completa para emitir, validar y administrar la credencial física y digital de 36,166 trabajadores agremiados, distribuidos en 20 bloques sindicales.

FirebaseCloud FunctionsFirebase AuthHMAC-SHA256Amazon SESZebra ZC100

El reto

El SNTE Sección 16 necesitaba una forma confiable de emitir credenciales para más de 36 mil agremiados, con datos verificables públicamente, sin depender de procesos manuales ni de terceros, y con capacidad de imprimir credenciales físicas de forma controlada desde un panel administrativo.

La solución

Diseñé y construí credencial.snte16.com como una aplicación Firebase completa: autenticación con roles administrativos personalizados, generación de folios alfanuméricos únicos por trabajador (formato S16-XXXXXXXX), compresión de fotografía en el lado del cliente para optimizar almacenamiento, y un sistema de validación pública donde cualquier persona puede verificar la autenticidad de una credencial escaneando su código QR.

  • 36,166 trabajadores organizados en 20 bloques, cada uno con activación independiente
  • Autenticación robusta con Firebase Auth y claims personalizados de administrador
  • Seguridad criptográfica — los códigos QR usan tokens firmados con HMAC-SHA256, imposibles de falsificar sin la clave del servidor
  • Validación pública en una ruta independiente (/validar) donde cualquiera puede confirmar la vigencia de una credencial
  • Notificación por correo vía Amazon SES, con flujo de activación, envío y reenvío independiente por bloque

El reto de impresión física

Una vez resuelto el sistema digital, surgió un problema concreto: las credenciales impresas con la impresora Zebra ZC100 salían con colores y proporciones incorrectas. Diagnostiqué que el origen era un desajuste entre el formato de imagen generado por el sistema y la resolución DPI esperada por la impresora. Escribí un script en Python que corrige automáticamente el formato antes de enviarlo a impresión.

El siguiente paso de esta arquitectura, actualmente en desarrollo, es integrar esa corrección directamente en una sección del panel administrativo, donde el administrador pueda buscar por RFC, previsualizar la credencial exacta como saldrá impresa, y disparar la impresión de cada cara de forma independiente.

Infraestructura

El proyecto vive en el repositorio credenciales-snte16 (privado) y corre sobre el proyecto Firebase snte16-credenciales. Un detalle de infraestructura no trivial: la organización de Google Cloud tenía una restricción a nivel de dominio (allowedPolicyMemberDomains) que bloqueaba el despliegue de Cloud Functions, resuelta mediante una excepción a nivel de proyecto.