Inna 5fd006aca9 Jubilar Django: borrar el portal antiguo, la web ya la sirve Next
El cutover se hizo hoy: Caddy manda www.nightspire.gg a :3001 (Next), así que
Django se quedó sin dominio y sin uso. Se comprobó antes de borrar que nada
dependía de él: ninguna referencia a :8001 en Caddy, el timer de reconciliación
llama a Next, DJANGO_API_BASE no lo leía ni una línea del código (se quita
también de la unidad de systemd), web-next/public es autónomo (736 ficheros
reales, 0 symlinks) y no hay ni una referencia a /static/. Con Django parado la
web siguió dando 200 en todas las rutas.

Se va: home/, novawow/, forum/, wotlk_db/, frontend/ (las islas React que Next
sustituyó), static/, staticfiles/, manage.py, requirements.txt, db.sqlite3 y el
Docker de Django.

Se quedan docs/ y sql/: no son código Django sino documentación y esquemas, y
sql/forum_schema.sql describe la BD acore_web que Next usa hoy.

La BASE DE DATOS no se toca. django_wow y sus 41 tablas home_* son ahora de
Next, que las consulta con SQL directo. El nombre se queda por historia.

README reescrito: describía cómo montar un Django que ya no existe (venv,
manage.py migrate, gunicorn, Docker).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 14:39:19 +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 y sus tablas home_* por motivos históricos: el portal era una app Django, jubilada el 2026-07-15. El código se borró (está en el historial de git), pero las tablas son las mismas y siguen en uso: 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%