9a240fe69e2a74c8def41211450b86601cfb5e75
De los 11 css/js del tema solo se usa uno: ns-css/nightspire-style.css, que carga layout.tsx. Los 10 .js no los pide nadie. Medido en un navegador sobre 10 rutas de producción, no deducido con grep: la web no solicita ni un solo JS del tema. Son los manejadores jQuery del portal Django, que se borró hoy; los sustituyeron los componentes React. Dos detalles que el grep no habría resuelto: - ns-scripts.js parecía referenciado desde SiteHeader.tsx, pero la coincidencia era un COMENTARIO que documenta de dónde salió el toggle móvil, no una carga. Se ajusta el comentario, que si no citaría un fichero inexistente. - power.js era la copia que UltimoWoW tenía de los tooltips de Wowhead, con g_host = 'https://wotlk.novawow.com' (dominio muerto) escrito dentro. La web usa el oficial de zamimg, que carga layout.tsx. Verificado tras borrar: build limpio, 7 rutas sin errores 4xx ni de JS, el tema se sigue aplicando y el menú móvil (lo que replicaba nwNavBar) despliega bien. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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_worldyacore_web(el foro)
La base del portal se sigue llamando
django_wowpor motivos históricos: el portal era una app Django, jubilada el 2026-07-15. Sus tablas llevaban el prefijohome_(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)
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.ggredirige awww.nightspire.gg, que va a127.0.0.1:3001;next.nightspire.ggapunta al mismo sitio. - Timer:
novawow-dpoints-reconcile.timerllama 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.db2del cliente (verweb-next/sql/db2/). - La tienda vive en
/store-<realm>en minúsculas (p. ej./store-trinity);/storea 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 deSITE_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.localni ningún fichero con secretos se versionan.
Description
Languages
Macaulay2
97.3%
TypeScript
2.3%
CSS
0.3%