#!/bin/bash
# Comandos útiles para el proyecto de Invitaciones

# ============================================
# DESARROLLO
# ============================================

# Iniciar servidor de desarrollo
npm run dev

# Build para producción
npm run build

# Ejecutar servidor en producción
npm start

# TypeScript check
npm run typecheck

# ESLint check
npm run lint

# ============================================
# BASE DE DATOS
# ============================================

# Conectar a MySQL (reemplaza root y contraseña)
mysql -u root -p invitacion_db

# Crear base de datos inicial
mysql -u root -p < setup.sql

# Ver todas las invitaciones
# Ejecutar en MySQL:
# SELECT * FROM invitations;

# Ver invitación más reciente
# SELECT * FROM invitations ORDER BY created_at DESC LIMIT 1;

# Actualizar invitación específica (por ID)
# UPDATE invitations SET title = 'Nuevo Titulo' WHERE id = 1;

# ============================================
# DEPENDENCIAS
# ============================================

# Instalar todas las dependencias
npm install

# Instalar paquete específico
npm install nombre-del-paquete

# Actualizar paquetes
npm update

# Ver paquetes instalados
npm list

# Verificar vulnerabilidades
npm audit

# Reparar vulnerabilidades
npm audit fix

# ============================================
# CARPETAS IMPORTANTES
# ============================================

# Tu configuración (NO COMPARTIR)
.env.local

# Archivos generados (ignorar)
.next/
node_modules/

# Componentes React
app/components/

# APIs del servidor
app/api/

# Panel de administración
app/admin/

# ============================================
# PUERTOS Y URLS
# ============================================

# Desarrollo
http://localhost:3000              # Página principal
http://localhost:3000/admin        # Panel admin
http://localhost:3000/api/init-db  # Inicializar BD

# ============================================
# DEBUGGING
# ============================================

# Limpiar archivos compilados
rm -rf .next

# Limpiar node_modules y reinstalar
rm -rf node_modules package-lock.json
npm install

# Ver logs del servidor (buscar en la terminal)
# Errores aparecen automáticamente

# Ver logs en navegador
# Abre DevTools: F12
# Abre Console para ver errores

# ============================================
# GIT (OPCIONAL)
# ============================================

# Inicializar git (ya está inicializado)
# git init

# Ver cambios
# git status

# Agregar cambios
# git add .

# Hacer commit
# git commit -m "Descripción de cambios"

# Hacer push
# git push origin main

# ============================================
# DEPLOYMENT
# ============================================

# Verificar que todo compila
npm run build

# Test local antes de desplegar
npm start

# Preparar para Vercel
npm run build
# Luego: git push (conectado a Vercel)

# ============================================
# SOLUCIÓN DE PROBLEMAS
# ============================================

# Si ves errores de TypeScript
npm run typecheck

# Si los cambios no se ven
# 1. Recarga la página (Ctrl+F5)
# 2. Limpia cache del navegador
# 3. Reinicia servidor (Ctrl+C, luego npm run dev)

# Si BD no conecta
# 1. Verifica MySQL corre: mysql -u root -p
# 2. Verifica .env.local tiene credenciales correctas
# 3. Accede a http://localhost:3000/api/init-db

# Si todo falla, limpia todo y reinicia
rm -rf .next node_modules package-lock.json
npm install
mysql -u root -p < setup.sql
npm run dev

# ============================================
# REFERENCIAS
# ============================================

# Documentación oficial
# Next.js: https://nextjs.org/docs
# React: https://react.dev
# Tailwind: https://tailwindcss.com
# MySQL: https://dev.mysql.com/doc/

# ============================================
# NOTAS IMPORTANTES
# ============================================

# - NUNCA commitees .env.local a Git
# - NUNCA subas credenciales de BD públicamente
# - Haz backups de tu BD regularmente
# - Usa HTTPS en producción
# - Valida inputs en servidor (ya incluído)

# ============================================
