Sistema de registro de entrada (check-in) para PyCon Panamá 2026. Tiene dos clientes que comparten el mismo backend:
| Cliente | Qué es | Estado |
|---|---|---|
| Página web (index.html) | Voluntarios escanean el QR con la cámara del celular o buscan por nombre. | ✅ En producción |
| Kiosco físico (firmware/) | ESP32-S3 con un lector QR dedicado, LED y zumbador. | 🚧 En diseño (fase 1–2) |
Important
La página web solo funciona con una cuenta de voluntario habilitada en Supabase. Sin sesión no puede leer ni marcar nada. El kiosco usa una clave por dispositivo, nunca credenciales de una persona.
flowchart LR
A[QR del asistente] --> W[Página web<br/>html5-qrcode]
A --> K[Kiosco ESP32-S3<br/>lector GM65/GM861]
W -- "RPC con sesión<br/>de voluntario" --> S[(Supabase<br/>checkin_marcar)]
K -- "HTTPS + x-device-key" --> E[Edge Function<br/>checkin-device]
E -- "service role" --> S
Toda la lógica de negocio (validar el token, detectar repetidos, registrar la hora) vive en Supabase. Los clientes solo leen el QR y muestran el resultado. Detalle completo en docs/arquitectura.md.
-
Copia la configuración pública de Supabase en env.js (URL y clave publicable).
-
Sirve la carpeta con cualquier servidor estático:
python3 -m http.server 8000
-
Abre
http://localhost:8000e inicia sesión con una cuenta de voluntario.
Note
La cámara del navegador requiere HTTPS o localhost. En producción el sitio se publica con GitHub Pages (por eso existe .nojekyll).
Sigue la guía paso a paso en firmware/README.md y el cableado en docs/hardware.md.
pycon_checkin/
├── index.html # Cliente web (voluntarios)
├── env.js # Configuración pública de Supabase
├── firmware/ # Kiosco ESP32-S3 en MicroPython
│ ├── main.py
│ ├── config.example.py
│ └── README.md
├── supabase/
│ ├── functions/checkin-device/index.ts # Edge Function para dispositivos
│ └── migrations/ # Tabla de dispositivos
├── docs/
│ ├── arquitectura.md
│ ├── hardware.md
│ ├── plan-proyecto.md
│ ├── operacion-evento.md
│ └── adr/ # Registros de decisiones de arquitectura
└── .github/ # Plantillas de issues y PR
| Documento | Para quién |
|---|---|
| Arquitectura | Desarrolladores |
| Hardware y cableado | Quien arma los kioscos |
| Plan de proyecto | Organización y coordinación |
| Operación el día del evento | Voluntarios y responsables de puerta |
| Decisiones de arquitectura (ADR) | Mantenedores |
| Seguridad | Todos |
| Historial de cambios | Todos |
Las contribuciones son bienvenidas. Lee CONTRIBUTING.md y el Código de Conducta antes de abrir un PR.
MIT © 2026 Python Panamá