Inna fa7897c195 Prefijos del tema nw- y uw- -> ns- (carpetas, ficheros, clases y rutas)
Renombrado completo de los prefijos heredados: 19 carpetas, 11 ficheros y 318
referencias en 35 ficheros de código, más las clases y las rutas url() de dentro
del CSS del tema. Se usa git mv para conservar el historial.

También fuera del código, que un sed no ve:
- BD: votesite.image_url (4 filas) apuntaba a /nw-themes/...
- Ficheros con la marca vieja en el NOMBRE: novawow-maintenance.webp ->
  nightspire-maintenance.webp (lo usa la página de mantenimiento) y
  store_novawow_response.js.

⚠ Alias en Caddy /nw-themes/* -> /ns-themes/*: los correos ENVIADOS antes del
rebranding llevan esas rutas escritas y están en las bandejas de los usuarios.
Sin el alias, sus imágenes se romperían. Verificado que las rutas viejas siguen
sirviendo 200.

Nota: ns-js/ y ns-js-handlers/ son CÓDIGO MUERTO (manejadores jQuery del portal
Django, que ya se borró). Se midió en el navegador: la web no pide ni un solo JS
del tema. Se renombran igualmente por consistencia, pero son candidatos a
borrarse.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 15:50:43 +00:00
2024-11-12 09:16:30 +01:00

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_stripelogstripelog). Next las consulta con SQL directo, sin ORM.


1. Puesta en marcha (desarrollo)

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.servicenext 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).
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-<realm> 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.
S
Description
Importado desde GitHub adevopg/NovaWoW
Readme 264 MiB
Languages
Macaulay2 97.3%
TypeScript 2.3%
CSS 0.3%