Dashboard React + Supabase para planificar el viaje familiar.
- Ve a https://supabase.com y crea una cuenta gratuita
- Clic en New Project → ponle nombre (ej:
viaje-familia) - Elige región más cercana (South America - São Paulo)
- Espera que termine de provisionar (~2 min)
- En tu proyecto Supabase → SQL Editor (panel izquierdo)
- Clic en New query
- Copia y pega TODO el contenido de
supabase_schema.sql - Clic en Run ▶
- Verás mensaje: "Success. No rows returned"
- En Supabase → Settings → API
- Copia:
- Project URL → algo como
https://abcdefgh.supabase.co - anon public key → cadena larga de caracteres
- Project URL → algo como
# En la carpeta del proyecto:
cp .env.example .envEdita .env y pega tus credenciales:
REACT_APP_SUPABASE_URL=https://TU_PROYECTO.supabase.co
REACT_APP_SUPABASE_ANON_KEY=tu_anon_key_aqui
npm install
npm start¡Abre http://localhost:3000 🎉
src/
├── lib/
│ ├── supabase.js # Cliente Supabase
│ └── constants.js # Colores, categorías, helpers
├── hooks/
│ └── useItems.js # CRUD + Realtime (Supabase)
├── components/
│ ├── Hero.js # Header con barra de progreso
│ ├── SummaryCards.js # Tarjetas de resumen
│ ├── AlertsSection.js # Alertas automáticas
│ ├── ItemsTable.js # Tabla con filtros y búsqueda
│ ├── ItemModal.js # Modal crear/editar ítem
│ ├── PersonCards.js # ¿Quién trae qué?
│ ├── ChartsSection.js # 4 gráficos con Chart.js
│ └── Checklist.js # Checklist interactivo
├── App.js # Navegación + layout principal
├── index.js
└── index.css
| Feature | Descripción |
|---|---|
| 📊 Dashboard | KPIs, progreso, totales |
| 📋 Tabla | Buscar, filtrar, ordenar por precio |
| ✏️ CRUD | Agregar, editar, eliminar ítems |
| 🔄 Toggle estado | Click para cambiar ✅/⏳/❓ |
| 👥 Personas | Vista por responsable |
| 📈 Gráficos | Categorías, personas, estados, top precios |
| ✅ Checklist | Marcar ítems como listos |
| ⚡ Realtime | Sincronización automática entre dispositivos |
| 🚨 Alertas | Ítems sin responsable, pendientes, sin precio |
npm install -g vercel
vercel
# Agrega las env vars en el dashboard de VercelEdita src/components/Hero.js → chips de fecha y destino.
Edita src/lib/constants.js → array CATEGORIAS y objeto CAT_COLORS.
En Supabase → Authentication → habilitar email/password.
Luego editar la política RLS en supabase_schema.sql:
-- Cambiar la política pública por una que requiera auth:
DROP POLICY "public_access" ON viaje_items;
CREATE POLICY "auth_access" ON viaje_items
FOR ALL USING (auth.role() = 'authenticated');