WallpaperMachine
The wallpapers you love. A new home on your Mac.
Invitaciones web animadas para fiestas infantiles: música, cuenta regresiva, mapa y confirmación por WhatsApp.
Translation pending
LifestyleGitHub @IrvinAlbornoz1394OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Invitaciones web animadas para fiestas infantiles, administrables desde un panel. Next.js 16 + Supabase (base de datos, login y archivos). Se despliega en Vercel.
/: landing pública./<nombre>-<hash> (ej. /lucero-k3f9a2): invitación. Si el hash no existe o la invitación
está en borrador, redirige a la landing./admin: panel (solo administradores) para crear invitaciones y temas.Invitación: festejado (nombre en 1 a 3 renglones, edad, foto), fecha/hora/zona horaria,
lugar y mapa, tema, show (hora programada, nombre, descripción y personajes con foto,
todo opcional), extras (miniferia, brincolines, alberca, mesa de dulces… con catálogo de
atajos y extras propios), galería, mensaje, WhatsApp para confirmar, qué secciones se ven
y todos los textos (admiten {nombre} y {edad}).
Tema (set de personajes): 6 colores (los tonos oscuros se calculan solos), fondo (rayos, degradado, lunares o imagen propia, con colores automáticos o elegidos), tipografía de títulos, logo (con o sin recuadro), imagen de la tarjeta (los personajes; el texto va debajo), imagen de grupo y música (con segundo de inicio). Cambiar un tema actualiza al instante todas las invitaciones que lo usan.
Requiere Docker (para Supabase local) y Node 20+.
npm install
npm run db:start # levanta Supabase en los puertos 553xx
cp .env.example .env.local # y pega las llaves que imprime el comando anterior
npm run admin:create -- [email protected] "una-contraseña"
npm run dev # http://localhost:3000
npm run db:reset borra todo y vuelve a cargar migraciones + supabase/seed.sql
(Lucero y una invitación demo). Después hay que volver a crear el admin.Los puertos de Supabase son 553xx (y no los 543xx por defecto) para no chocar con otros proyectos Supabase locales.
npx supabase login
npx supabase link --project-ref <ref-del-proyecto>
npx supabase db push # tablas, políticas, bucket "media" y el tema Bely y Beto
# .env.production.local con NEXT_PUBLIC_SUPABASE_URL y SUPABASE_SECRET_KEY de producción
node --env-file=.env.production.local scripts/create-admin.mjs [email protected] "contraseña"
Copia la invitación, su tema y todos sus archivos (fotos, galería, música); se puede repetir sin duplicar nada:
# .env.local = origen (local) · .env.production.local = destino
npm run invitation:copy -- samantha-2eurtf
Importa el repo en vercel.com/new (framework: Next.js, sin cambiar nada más) y agrega estas variables de entorno:
| Variable | Valor |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | URL del proyecto Supabase |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY | llave publicable (sb_publishable_…) |
NEXT_PUBLIC_SITE_URL | tu dominio, ej. https://invitaciones.com (para la vista previa en WhatsApp) |
NEXT_PUBLIC_CONTACT_WHATSAPP | opcional: WhatsApp para cotizar desde la landing |
NEXT_PUBLIC_DEMO_SLUG | opcional: invitación de ejemplo que enlaza la landing |
SUPABASE_SECRET_KEY no va en Vercel: solo la usa el script de crear admins.
Cada push a main se publica solo; otras ramas generan una URL de preview.
src/
├── app/
│ ├── page.tsx landing
│ ├── [slug]/page.tsx invitación pública (cacheada; se refresca al guardar)
│ └── admin/ panel: login, invitaciones, temas, vista previa
├── components/invitation/ la invitación: secciones, efectos, estilos
├── lib/
│ ├── defaults.ts textos, secciones, catálogo de extras, tipografías, zonas horarias
│ ├── view.ts convierte una fila de la BD en lo que pinta la invitación
│ ├── schema.ts validación de lo que guarda el panel (zod)
│ └── data.ts / auth.ts lectura cacheada y verificación de admin
└── proxy.ts refresca la sesión y protege /admin
supabase/
├── migrations/ esquema, RLS, bucket y tema incluido
└── seed.sql datos de ejemplo (solo local)
public/temas/bely-beto/ recursos del tema incluido
legacy/ la invitación estática original (solo referencia)
"use cache" + cacheTag); el panel las invalida con
updateTag al guardar la invitación o su tema, así que los cambios se ven al instante.noindex: tienen direcciones particulares.