Sistema de confirmación de asistencia (RSVP) con temática Minecraft para el cumpleaños de Matías (6 años). 100% gratuito: GitHub Pages + Cloudflare Worker + MockAPI.io.
.
├── index.html # Página pública del invitado (?invitado=ID)
├── admin.html # Panel admin (gestión de invitados + vista por invitado)
└── worker/
├── worker.js # Cloudflare Worker (proxy seguro a MockAPI)
└── wrangler.toml # Config del Worker
- Crear cuenta en https://mockapi.io y un proyecto nuevo.
- Crear recurso
invitadoscon campos:nombre— stringasistira— boolean (puede ser null)acompanantes— number (default 0)config— object (puede quedar vacío)confirmadoEn— string (timestamp)
- Crear recurso
configcon campo:value— object
Y crear UN registro inicial (queda conid=1).
- Copiar la URL base del proyecto (ej:
https://abcd1234.mockapi.io/api/v1).
- Instalar Wrangler:
npm i -g wrangler cd worker && wrangler login- Editar
wrangler.toml:ALLOWED_ORIGIN= origen de tu GitHub Pages (sin barra final, ej.https://usuario.github.io)MOCKAPI_URL= URL base de MockAPI del paso 1
- Desplegar:
wrangler deploy - Setear el token admin secreto:
wrangler secret put ADMIN_TOKENy pegar un valor largo aleatorio (ej. salida deopenssl rand -hex 32). - Anotar la URL final del Worker (ej.
https://cumple-matias.usuario.workers.dev).
- Crear repo y subir
index.html+admin.html. - Editar la constante
CONFIG.WORKER_URLdentro deindex.htmlcon la URL del Worker. - En Settings → Pages, habilitar Pages desde la rama
main. - Abrir
https://usuario.github.io/repo/admin.html:- Pegar el
ADMIN_TOKENy entrar. - En la pestaña Setup, guardar la Worker URL y testear conexión.
- En Vista del invitado, configurar fecha, dirección, sugerencia de regalo, talla, etc.
- En Invitados, crear los 25 invitados (o usar el bulk-add desde Setup).
- Copiar el link único de cada invitado y compartirlo (WhatsApp/SMS).
- Pegar el
- El Worker no expone
GET /invitados. Un invitado solo puede consultar/actualizar su propio ID, y solo puede tocar los camposasistira,acompanantes,confirmadoEn(whitelist). - La URL real de MockAPI queda en variables del Worker, nunca en el frontend.
- Los endpoints
/admin/*requieren el headerX-Admin-Tokeny se autentican contraADMIN_TOKEN(secret). - CORS limitado al origen configurado (
ALLOWED_ORIGIN). - Los IDs de MockAPI son cortos (autoincrementales). Para más entropía, podés migrar a IDs largos generados por el panel.
- Tema: paleta y tipografías en el
:rootCSS deindex.html. - Bloques opcionales (regalo, talla, nota): se activan globalmente desde el panel o por invitado.
- Modo demo offline: en
index.html,CONFIG.DEMO_MODE = truemuestra datos de ejemplo sin Worker.
Abrir index.html con ?invitado=1 en el navegador (con DEMO_MODE=true o el Worker funcionando) y admin.html con el token admin.