Fase 0 SPA/SSR: scaffold Next.js 16 (App Router) + Tailwind v4 + home SSR
Inicia la reescritura del frontend a una app Next.js con SSR (Django pasará a ser API JSON). No toca producción: Django sigue sirviendo www; Next corre aparte en :3001. - web-next/: Next.js 16 App Router, TypeScript, Tailwind CSS v4, alias @/*. - lib/api.ts: cliente de la API Django (SSR -> 127.0.0.1:8001; navegador -> /api relativo vía Caddy). - app/page.tsx: home con SSR por petición (force-dynamic) que hace fetch de /api/home/news/ y /api/home/status/ y renderiza noticias + estado con Tailwind. - app/layout.tsx: lang=es + SEO (title/description/keywords/OpenGraph) por el Metadata API de Next (renderizado en servidor). - Servicio systemd novawow-next (next start -p 3001, DJANGO_API_BASE). Nota Next 16 (breaking): params/searchParams son Promise (await); fetch no se cachea por defecto. Verificado: SSR sirve HTML con datos reales de Django y SEO en el <head>; producción Django intacta. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import type { Metadata } from 'next'
|
||||
import './globals.css'
|
||||
|
||||
const SERVER = 'Nova WoW'
|
||||
|
||||
// SEO renderizado en servidor (SSR) — equivale a las meta de la antigua head.html.
|
||||
export const metadata: Metadata = {
|
||||
title: `${SERVER} Server de WoW WotLK 3.4.3 Latino y Español 💎`,
|
||||
description: `Descarga y juega gratis a WotLK Classic en ${SERVER} - Server de WoW WotLK 3.4.3 Latino y Español - El mejor server de WoW 🔥`,
|
||||
keywords: [
|
||||
'server wow', 'server wotlk', 'server 3.4.3', 'wotlk classic',
|
||||
'servidor de wow', 'servidor wotlk', 'wow 3.4.3 latino', 'wow 3.4.3 español',
|
||||
'server wow en español', 'el mejor server de wow', SERVER,
|
||||
],
|
||||
openGraph: {
|
||||
siteName: SERVER,
|
||||
title: `${SERVER} Server de WoW WotLK 3.4.3 Latino y Español 💎`,
|
||||
description: `Juega gratis WotLK Classic en ${SERVER} - Server de WoW 3.4.3 Latino y Español`,
|
||||
type: 'website',
|
||||
locale: 'es_ES',
|
||||
url: 'https://www.nightspire.gg/',
|
||||
},
|
||||
}
|
||||
|
||||
export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
|
||||
return (
|
||||
<html lang="es">
|
||||
<body>{children}</body>
|
||||
</html>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user