Una aplicación web moderna con una ruleta de la fortuna interactiva para la marca Stromberg, desarrollada con Next.js, Tailwind CSS, GSAP y Firebase.
- Formulario de participación obligatorio con validación completa
- Control de participación por IP - solo una oportunidad por persona
- Ruleta interactiva con animaciones suaves usando GSAP
- Diseño responsive optimizado para móviles
- Integración con Google Sheets para almacenamiento de participantes
- Estética moderna siguiendo el branding de Stromberg
- Next.js 14 - Framework de React
- TypeScript - Tipado estático
- Tailwind CSS - Estilos utilitarios
- GSAP - Animaciones de la ruleta
- Google Sheets API - Almacenamiento de datos
- React Hook Form - Manejo de formularios
- Yup - Validación de esquemas
-
Instalar dependencias:
npm install
-
Configurar Google Sheets API:
- Crea un proyecto en Google Cloud Console
- Habilita la Google Sheets API
- Crea una cuenta de servicio y descarga el archivo JSON de credenciales
- Crea un archivo
.env.localcon las siguientes variables:
GOOGLE_SHEETS_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n" GOOGLE_SHEETS_CLIENT_EMAIL="tu-service-account@proyecto.iam.gserviceaccount.com" GOOGLE_SHEETS_SHEET_ID="tu-google-sheet-id" GOOGLE_CLOUD_PROJECT_ID="tu-project-id" GOOGLE_SHEETS_PRIVATE_KEY_ID="key-id" GOOGLE_SHEETS_CLIENT_ID="client-id"
- Comparte tu Google Sheet con el email de la cuenta de servicio
-
Configurar Google Sheet:
- Crea una nueva hoja de cálculo en Google Sheets
- La primera fila debe contener los encabezados:
nombre,apellido,telefono,email,ip,fecha - Copia el ID de la hoja desde la URL (la parte entre
/d/y/edit)
# Ejecutar en modo desarrollo
npm run devLa aplicación estará disponible en http://localhost:3000
# Construir la aplicación
npm run build
# Ejecutar en producción
npm start-
Instala Vercel CLI:
npm i -g vercel
-
Inicia sesión en Vercel:
vercel login
En el dashboard de Vercel, configura las siguientes variables de entorno:
GOOGLE_SHEETS_PRIVATE_KEY
GOOGLE_SHEETS_CLIENT_EMAIL
GOOGLE_SHEETS_SHEET_ID
GOOGLE_CLOUD_PROJECT_ID
GOOGLE_SHEETS_PRIVATE_KEY_ID
GOOGLE_SHEETS_CLIENT_ID
# Despliegue automático
vercel
# O conecta tu repositorio de GitHub para despliegues automáticos- ✅ Build exitoso sin errores de TypeScript
- ✅ Variables de entorno configuradas
- ✅ Google Sheets API funcionando
- ✅ Aplicación responsive en todos los dispositivos
- Campos obligatorios: Nombre, Apellido, Teléfono, Email
- Validación en tiempo real
- Control de IP para evitar participaciones duplicadas
- Almacenamiento seguro en Google Sheets
- 8 secciones visuales
- Animación suave con GSAP
- Resultado aleatorio garantizado
- Modal de felicitaciones al ganar
- Bloqueo después de participar
- Optimizado para dispositivos móviles
- Colores del branding Stromberg (turquesa/teal y rojo)
- Fondo personalizado con la imagen de marca
- Interfaz moderna y atractiva
Los colores están definidos en tailwind.config.js:
stromberg-teal: #00B4A6stromberg-dark-teal: #008B7Fstromberg-red: #E53E3Estromberg-dark-red: #C53030
background.png: Imagen de fondo principal03. Iso negro Stromberg PNG.png: Logo de Stromberglogo stromberg.png: Logo alternativo de Stromberg
El archivo .env.local debe contener las configuraciones de Google Sheets API:
GOOGLE_SHEETS_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
GOOGLE_SHEETS_CLIENT_EMAIL="tu-service-account@proyecto.iam.gserviceaccount.com"
GOOGLE_SHEETS_SHEET_ID="tu-google-sheet-id"
GOOGLE_CLOUD_PROJECT_ID="tu-project-id"
GOOGLE_SHEETS_PRIVATE_KEY_ID="key-id"
GOOGLE_SHEETS_CLIENT_ID="client-id"Los participantes se almacenan en Google Sheets con la siguiente estructura:
| nombre | apellido | telefono | ip | fecha | |
|---|---|---|---|---|---|
| Juan | Pérez | +1234567890 | juan@email.com | 192.168.1.1 | 2024-01-15 10:30:00 |
- Error de Google Sheets API: Verifica que las variables de entorno estén configuradas correctamente
- Problemas de IP: En desarrollo local, se usa una IP de fallback (127.0.0.1)
- Animaciones no funcionan: Asegúrate de que GSAP esté instalado correctamente
Este proyecto está desarrollado para Stromberg. Todos los derechos reservados.