# Club VIP Los Caracas

Sitio web oficial + sistema de reservas + panel administrativo.

**La Guaira, Venezuela** · Beach club con piscina de agua salada, toldos, pérgolas, gastronomía y eventos.

---

## Stack técnico

| Capa | Tecnología |
|---|---|
| Frontend | **Next.js 16** (App Router) + React 19 + Tailwind v4 + Framer Motion |
| Backend | Next.js API Routes (Node.js) |
| Base de datos | **MySQL** (vía Prisma ORM) |
| Autenticación | **Auth.js v5** (NextAuth) |
| Email | **Resend** (transaccional) |
| Hosting recomendado | Vercel (frontend) + Railway/Aiven (MySQL) |
| Pagos | Pago Móvil + BDV C2P + Stripe (roadmap) |

---

## Quick start

```powershell
# 1. Instalar dependencias
npm install

# 2. Copiar variables de entorno
copy .env.example .env
# (editá .env con tus credenciales)

# 3. Configurar base de datos
npx prisma migrate dev --name init
npm run db:seed

# 4. Arrancar
npm run dev
```

- Sitio público: http://localhost:3000
- Panel admin: http://localhost:3000/admin

> 📖 **Guía completa de setup**: ver [`docs/SETUP.md`](./docs/SETUP.md)

---

## Funcionalidades

### Sitio público (`/`)
- Hero con video de fondo (40s, optimizado a 6.7 MB)
- Información del club (piscina de agua salada, ubicación)
- 4 opciones de toldos/pérgolas con precios reales
- **Wizard de reservas en 4 pasos**: calendario, contador de personas, selección de toldo, extras y datos
- Menú completo (~50 items) en 7 categorías con tabs
- 3 paquetes de bebidas (Cavas) — Bronce, Plata, Oro
- Sección de eventos y celebraciones
- Horarios y normativas
- **Feed de Instagram en vivo** vía Behold.so (5 últimas publicaciones)
- **3 videos embebidos de TikTok**
- Botón flotante de WhatsApp con mensaje pre-armado

### Panel admin (`/admin`)
- Login con email/password (Auth.js + bcrypt)
- Dashboard con KPIs (hoy/semana/mes) + gráfico de últimos 7 días
- Lista de reservas con filtros por estado y búsqueda
- Detalle completo de cada reserva
- Registro manual de pagos (Pago Móvil/BDV/Transferencia/Efectivo)
- Vista de pagos pendientes
- Audit log automático

---

## Comandos útiles

```powershell
npm run dev               # Desarrollo
npm run build             # Build producción
npm start                 # Ejecutar producción

npm run db:studio         # Explorador visual de la DB
npm run db:migrate        # Crear migración
npm run db:seed           # Poblar DB inicial
npm run db:reset          # Borrar DB (⚠️ destructivo)
```

---

## Documentación

- **[docs/SETUP.md](./docs/SETUP.md)** — Cómo instalar el proyecto desde cero (MySQL, Prisma, Auth, Resend)
- **[docs/ADMIN.md](./docs/ADMIN.md)** — Manual completo del panel administrativo
- **[docs/PAGOS.md](./docs/PAGOS.md)** — Roadmap de integración de pasarelas (MovilPay, BDV C2P, Stripe)

---

## Estructura

```
loscaracas-app/
├── app/
│   ├── api/                    # Endpoints REST
│   │   ├── auth/[...nextauth]/
│   │   ├── bookings/
│   │   └── admin/stats/
│   ├── admin/                  # Panel admin (protegido)
│   │   ├── _components/        # Componentes internos
│   │   ├── reservas/
│   │   ├── pagos/
│   │   ├── ajustes/
│   │   └── page.jsx
│   ├── login/
│   ├── components/             # ReservaWizard, TikTokFeed
│   ├── layout.js
│   └── page.js
├── lib/
│   ├── db.js                   # Prisma client (singleton)
│   ├── auth.js                 # Config NextAuth
│   ├── email.js                # Cliente Resend + templates
│   └── validators.js           # Schemas Zod
├── prisma/
│   ├── schema.prisma
│   └── seed.js
├── docs/                       # Documentación
├── public/
└── middleware.js               # Protección de rutas /admin
```

---

## Seguridad

- ✅ Las rutas `/admin/*` están protegidas por middleware (redirige a `/login` si no hay sesión).
- ✅ Las contraseñas se guardan con bcrypt (cost 12).
- ✅ Las sesiones usan JWT firmado con `AUTH_SECRET` (cookies HTTP-only).
- ✅ Cada acción admin se registra en `audit_logs` con `adminId` y timestamp.
- ✅ Validación con Zod en todos los endpoints (frontend + backend).

---

## Roadmap

- [x] **Fase 1**: Backend base + panel admin + persistencia de reservas (✓ implementado)
- [ ] **Fase 2**: MovilPay con validación automática
- [ ] **Fase 3**: BDV C2P (débito inmediato con OTP)
- [ ] **Fase 4**: Stripe para tarjetas internacionales
- [ ] **Fase 5**: Edición de configuración desde el admin (precios, horarios)
- [ ] **Fase 6**: Reportes y exportación de reservas a Excel
