Plataforma de invitaciones digitales — arquitectura escalable basada en Supabase.
tuboda-platform/
├── supabase/migrations/ → Scripts SQL (correr en orden en Supabase)
├── shared/js/backend.js → Módulo de referencia (se copia dentro de cada plantilla)
├── templates/ → Las 12 plantillas + starter (base para plantillas nuevas)
│ ├── elegante/ ... roatan/ → Cada una 100% independiente (index.html, css/, js/)
│ └── starter/ → Punto de partida para crear una plantilla nueva
├── catalogo/ → Sitio público que lista las plantillas (lee de Supabase)
├── admin/ → Panel administrativo (login, invitaciones, wizard)
└── portal/ → Portal del cliente (acceso por código, sin login)
supabase/migrations/0001_init.sqlsupabase/migrations/0002_portal_functions.sqlsupabase/migrations/0003_seed_plantillas.sqlinsert into perfiles_admin (id, nombre, rol)
select id, 'Bryan', 'admin' from auth.users where email = 'tu-correo@ejemplo.com';
(Sin este paso, el login del panel funcionará pero no tendrás permisos para editar nada — las políticas de RLS lo exigen.)
Faltan tus credenciales reales en 3 lugares (busca PEGAR_CLOUD_NAME y PEGAR_UPLOAD_PRESET):
shared/js/backend.js (y su copia dentro de cada templates/*/js/backend.js)portal/js/app.jsRecomendación: una sola cuenta de Cloudinary para toda la plataforma (no una por cliente), con las fotos organizadas por evento (tuboda/{eventoId}/...) — ya está armado así.
Sube esta carpeta completa a un repositorio y activa GitHub Pages (Settings → Pages → rama main, carpeta raíz). Con eso:
tudominio.com/catalogo/tudominio.com/admin/tudominio.com/portal/?codigo=XXXXtudominio.com/templates/elegante/index.html?evento=bryan-stefany?evento=): tudominio.com/templates/elegante/index.htmlCada plantilla, si abres su index.html sin ?evento= en la URL, usa el config-demo.js que ya trae dentro (los mismos datos con los que las diseñamos). Así puedes revisar el diseño en cualquier momento sin necesidad de crear el evento en la base de datos primero.
admin/, inicia sesión.templates/{plantilla}/index.html?evento={slug}) ya está activo — sin compilar nada, sin hacer commit.perfiles_admin ya lo soporta, falta la pantalla para gestionarlo.Todo esto se puede ir agregando sin tocar el núcleo — es justo el punto de la arquitectura.