Un dashboard administrativo minimalista y sobrio construido con React y Tailwind CSS.
- Diseño Minimalista: Paleta blanco y negro sin colores llamativos
- Interfaz Sobria: Diseño limpio y profesional
- Tipografía Clara: Fuente Inter con excelente legibilidad
- Layout Responsivo: Adaptable a diferentes dispositivos
- CRUD Completo: Operaciones de Create, Read, Update, Delete
- Estadísticas en Tiempo Real: Métricas y leaderboards
- Autenticación: Login con contraseña o passkey
- React 18: Biblioteca de interfaz de usuario
- Tailwind CSS: Framework de CSS utility-first
- React Router DOM: Navegación y enrutamiento
- Vite: Herramienta de construcción rápida
- PostCSS: Procesamiento de CSS
- ESLint: Linting de código JavaScript
src/
├── components/
│ └── layout/
│ ├── Layout.jsx
│ └── Sidebar.jsx
├── pages/
│ ├── Login.jsx
│ ├── Menu.jsx
│ ├── Events.jsx
│ ├── Rewards.jsx
│ └── Game.jsx
├── App.jsx
├── main.jsx
└── index.css
- Fondo blanco: #FFFFFF
- Texto negro: #111111
- Líneas divisoras: #E5E7EB
- Sin colores de acento llamativos
- Transiciones Suaves: transition-all duration-200 ease-in-out
- Hover Minimalista: Subrayado o sombreado leve
- Espaciado Consistente: px-6, py-4, gap-4
- Tipografía Inter: text-lg, font-medium para títulos
-
Clonar el repositorio:
git clone <repository-url> cd TAKE
-
Instalar dependencias:
npm install
-
Ejecutar en modo desarrollo:
npm run dev
-
Abrir en el navegador:
http://localhost:5173
npm run dev: Inicia el servidor de desarrollonpm run build: Construye la aplicación para producciónnpm run preview: Previsualiza la build de producciónnpm run lint: Ejecuta el linter
- Autenticación con Contraseña: Formulario tradicional
- Autenticación con Passkey: Método moderno de autenticación
- Diseño Minimalista: Interfaz limpia y centrada
- Menu: CRUD de ítems del menú
- Events: CRUD de eventos
- Rewards: CRUD + estadísticas de recompensas
- Game: Leaderboard de jugadores
- Create Item: Agregar nuevos ítems al menú
- Read Items: Ver lista de ítems disponibles
- Update Item: Editar ítems existentes
- Delete Item: Eliminar ítems del menú
- Create Event: Crear nuevos eventos
- Read Events: Ver lista de eventos
- Update Event: Editar eventos existentes
- Delete Event: Eliminar eventos
- Create Reward: Crear nuevas recompensas
- Read Rewards: Ver lista de recompensas
- Update Reward: Editar recompensas existentes
- Delete Reward: Eliminar recompensas
- Estadísticas:
- Usuarios con más sellos
- Total de sellos
- Cafés gratis dados
- Total de recompensas dadas
- Watch Leaderboard: Ver ranking de jugadores
- Estadísticas del Juego:
- Total de jugadores
- Puntuación promedio
- Total de sellos
El proyecto requiere configuración mínima de variables de entorno. Copia env.example como .env y configura:
# Variable requerida
VITE_API_BASE_URL=http://localhost:3000/api
# Variables opcionales
VITE_DEMO_MODE=true
VITE_USE_MOCK_DATA=falseNota importante: El frontend NO maneja credenciales de Google OAuth. El backend es responsable de toda la configuración de autenticación.
El sistema incluye validación automática de configuración:
- ✅ Verificación de variables de entorno requeridas
- ✅ Health checks del backend
- ✅ Validación de endpoints de autenticación
- ✅ Verificación de configuración CORS
- ✅ Diagnóstico completo del sistema
- 🔍 Errores específicos: Categorización por tipo (configuración, red, CORS, autorización)
- 🏥 Health checks: Verificación automática del estado del sistema
- 🔄 Reintentos: Funcionalidad de reintento para verificaciones fallidas
- 📊 Diagnóstico: Panel de estado del sistema con detalles técnicos
El proyecto está configurado con Tailwind CSS minimalista:
- Paleta de colores blanco y negro
- Tipografía Inter optimizada
- Transiciones suaves
- Componentes reutilizables
- Navegación declarativa
- Rutas protegidas
- Estados activos en enlaces
- Navegación programática
Edita tailwind.config.js para cambiar la paleta de colores:
colors: {
primary: {
DEFAULT: '#111111',
light: '#374151',
},
gray: {
light: '#F9FAFB',
medium: '#E5E7EB',
dark: '#6B7280',
},
text: {
primary: '#111111',
secondary: '#6B7280',
}
}Los componentes están organizados por funcionalidad:
components/layout/: Componentes de estructurapages/: Páginas completas con lógica CRUD
El proyecto está completamente preparado para recibir endpoints de Supabase. Se han creado:
src/
├── services/
│ ├── api.js # Servicio base para Supabase
│ ├── menuService.js # CRUD para menu_items y categories
│ ├── eventsService.js # CRUD para events
│ ├── rewardsService.js # CRUD para rewards + estadísticas
│ ├── gameService.js # CRUD para games y high_scores
│ └── userService.js # CRUD para users y wallets
├── types/
│ └── database.js # Tipos basados en el esquema
├── hooks/
│ └── useApi.js # Hooks para manejo de estado API
└── components/common/
├── ErrorMessage.jsx # Componente de errores
└── LoadingSpinner.jsx # Componente de loading
getMenuItems()- Obtener items con categoríascreateMenuItem(data)- Crear itemupdateMenuItem(id, data)- Actualizar itemdeleteMenuItem(id)- Eliminar itemgetMenuItemsByCategory(categoryId)- Filtrar por categoría
getEvents()- Obtener todos los eventoscreateEvent(data)- Crear eventoupdateEvent(id, data)- Actualizar eventodeleteEvent(id)- Eliminar eventogetPublishedEvents()- Eventos publicados
getRewards()- Obtener recompensascreateReward(data)- Crear recompensaupdateReward(id, data)- Actualizar recompensadeleteReward(id)- Eliminar recompensa
getTotalSeals()- Total de sellosgetTopUsersBySeals()- Usuarios con más sellosgetTotalFreeCoffees()- Cafés gratis dadosgetTotalRewardsGiven()- Total de recompensas
getGames()- Obtener juegosgetHighScores()- Obtener puntuacionesgetTopScores()- LeaderboardcreateHighScore(data)- Crear puntuación
getUsers()- Obtener usuariosgetUserByEmail(email)- Buscar por emailcreateUser(data)- Crear usuarioupdateUser(id, data)- Actualizar usuario
getAppleWallet(userId)- Wallet de ApplegetGoogleWallet(userId)- Wallet de GoogleaddSealsToWallet(userId, seals)- Agregar sellosgetWalletStats()- Estadísticas de wallets
Crear archivo .env con:
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
Ver src/docs/endpoints.md para la documentación completa de todos los endpoints esperados basados en el esquema de Supabase.
- Configurar variables de entorno de Supabase
- Conectar servicios con endpoints reales
- Implementar autenticación real
- Agregar validación de datos
- Implementar cache y optimización
- Agregar tests unitarios y de integración
- Optimizar rendimiento
- Implementar PWA para acceso offline
Este proyecto está bajo la Licencia MIT.