# Nova WoW Portal web para un servidor de World of Warcraft 3.4.3 basado en AzerothCore. - **Framework:** Next.js 16 (App Router) + Tailwind, en `web-next/` - **Idiomas:** ES/EN con next-intl - **Bases de datos (MySQL):** `django_wow` (la del portal), `acore_auth`, `acore_characters`, `acore_world` y `acore_web` (el foro) > La base del portal se sigue llamando `django_wow` por motivos históricos: el portal era una app > Django, jubilada el 2026-07-15. Sus tablas llevaban el prefijo `home_` (el nombre de la app) y se > renombraron sin él (`home_stripelog` → `stripelog`). Next las consulta con SQL directo, sin ORM. --- ## 1. Puesta en marcha (desarrollo) ```bash git clone https://git.nightspire.gg/Inna/NovaWoW.git cd NovaWoW/web-next npm install # crear .env.local con las variables de la sección 2 npm run dev # http://127.0.0.1:3000 ``` ## 2. Configuración (`web-next/.env.local`) **No se versiona** (contiene secretos). | Variable | Descripción | |---|---| | `DB_USER` / `DB_PASSWORD` / `DB_HOST` / `DB_PORT` | Credenciales MySQL (compartidas por las 5 BBDD) | | `DB_NAME_DEFAULT` | BD del portal (`django_wow`) | | `DB_NAME_AUTH` / `DB_NAME_CHARACTERS` / `DB_NAME_WORLD` / `DB_NAME_WEB` | BBDD de AzerothCore y del foro | | `SESSION_SECRET` | Firma de la sesión | | `SITE_URL` | Raíz pública del sitio. **De aquí cuelgan todos los enlaces e imágenes de los correos**, así que cambiar de dominio es tocar solo esta variable | | `EMAIL_*` | SMTP (hoy Proton Mail, `smtp.protonmail.ch:587` con STARTTLS). `EMAIL_HOST_USER` es además el remitente, y Proton exige que coincida con la dirección del token | | `AC_SOAP_*` | Conexión SOAP a AzerothCore (envío de ítems, etc.) | | `STRIPE_*` / `SUMUP_*` | Pasarelas de pago | | `NEXT_PUBLIC_TURNSTILE_SITE_KEY` / `TURNSTILE_SECRET_KEY` | Captcha de Cloudflare | | `ADMIN_EMAILS` / `ADMIN_GMLEVEL` | Acceso al panel de administración | | `CRON_SECRET` | Protege el endpoint de reconciliación de SumUp | ## 3. Producción - **Servicio:** `novawow-next.service` → `next start -p 3001` - **Proxy:** Caddy. `nightspire.gg` redirige a `www.nightspire.gg`, que va a `127.0.0.1:3001`; `next.nightspire.gg` apunta al mismo sitio. - **Timer:** `novawow-dpoints-reconcile.timer` llama cada 2 min a `/api/dpoints/reconcile` (SumUp no manda webhooks, así que se reconcilia sondeando). ```bash cd web-next && npm run build && systemctl restart novawow-next ``` ## 4. Estructura ``` web-next/ app/[locale]/ páginas (una carpeta por ruta) components/ componentes React lib/ acceso a datos y lógica (SQL directo, sin ORM) messages/ traducciones ES/EN public/ estáticos, incluido el tema nw-ryu sql/db2/ utilidades para leer los DB2 del cliente 3.4.3 docs/ documentación (foro, migración a 3.4.3) sql/ esquemas y semillas (foro, precios, etc.) ``` ## 5. Notas - En 3.4.3 **no existe `item_template`**: los datos de ítems salen de los `.db2` del cliente (ver `web-next/sql/db2/`). - La tienda vive en `/store-` en minúsculas (p. ej. `/store-trinity`); `/store` a secas da 404. - Los correos se construyen en `web-next/lib/emails.ts`: una sola maqueta compartida por las 8 plantillas, con todas las URLs derivadas de `SITE_URL`. ## 6. Seguridad - Los secretos que estuvieron hardcodeados en el historial de git deben **rotarse**: contraseña de MySQL/SOAP, credenciales SMTP y claves de Stripe/SumUp. - Ni `.env.local` ni ningún fichero con secretos se versionan.