Files
project-afterlife/docs/cms-content.md
consultoria-as 81e978947e
Some checks failed
Deploy / deploy (push) Has been cancelled
feat: switch Minecraft from FTB Infinity Evolved to FTB Evolution
Minecraft 1.21.1 + NeoForge 21.1.218 with 200+ mods.
Added MAX_TICK_TIME=-1 to prevent watchdog crashes on startup.
Updated CMS entries, README, and all docs to reflect new modpack.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 13:14:55 +00:00

6.0 KiB

Modelo de Contenido CMS

Strapi 5 — Content Types

Game

Entrada principal de cada juego preservado.

Campo Tipo Requerido Localizado Descripcion
title string si si Nombre del juego
slug uid si no URL-friendly, auto-generado desde title
description richtext no si Descripcion larga del juego
genre enum si no MMORPG, FPS, Casual, Strategy, Sports, Other
releaseYear integer si no Ano de lanzamiento original
shutdownYear integer si no Ano de cierre de servidores
developer string si no Estudio desarrollador
publisher string no no Publisher/distribuidor
screenshots media[] no no Capturas de pantalla (solo imagenes)
coverImage media si no Imagen de portada principal
serverStatus enum no no online, maintenance, coming_soon (default)
serverLink string no no IP:puerto para conectarse
documentary relation no no oneToOne con Documentary

Documentary

Documental interactivo asociado a un juego.

Campo Tipo Requerido Localizado Descripcion
title string si si Titulo del documental
description text no si Descripcion/subtitulo
game relation no no oneToOne con Game
chapters relation no no oneToMany con Chapter (ordenados)

Chapter

Capitulo individual de un documental.

Campo Tipo Requerido Localizado Descripcion
title string si si Titulo del capitulo
content richtext si si Contenido narrativo completo
audioFile media no no Archivo de audio (narracion)
audioDuration integer no no Duracion en segundos
order integer si no Orden de aparicion (1, 2, 3...)
coverImage media no no Imagen de portada del capitulo
documentary relation no no manyToOne con Documentary

Modelo i18n de Strapi 5

Strapi 5 maneja la internacionalizacion con filas separadas por locale. Cada documento tiene un document_id compartido y multiples filas:

document_id: "abc123"
├── id: 1  (locale: en, draft)
├── id: 2  (locale: en, published)
├── id: 3  (locale: es, draft)
└── id: 4  (locale: es, published)

Las relaciones (_lnk tables) conectan las filas del mismo estado. Un juego publicado en ES se conecta al documental publicado en ES, no al draft ni al EN.

Tablas de enlace

  • games_documentary_lnk — game_id ↔ documentary_id
  • chapters_documentary_lnk — chapter_id ↔ documentary_id + chapter_ord

Contenido Actual

Juegos (3)

Slug document_id Titulo Genre Release Shutdown Server
fusionfall sx17hshy2d... FusionFall MMORPG 2009 2013 online
maplestory2 ms2maple2d... MapleStory 2 MMORPG 2015 2020 online
minecraft-ftb-evolution mcftbevol... Minecraft: FTB Evolution Sandbox 2011 - online

Documentales (2)

FusionFall: "El Mundo Que No Queriamos Perder"

# Titulo Contenido
1 El Sueno Imposible Origenes, Cartoon Network, Grigon Entertainment
2 Cuando los Mundos Colisionaron Desarrollo, motor Unity, estilo anime de Midori Foo
3 Bienvenido al Futuro Lanzamiento, viajes en el tiempo, sistema de Nanos
4 La Caida de Grigon Quiebra del estudio, CN asume el desarrollo
5 La Academia Free-to-play, The Academy, Adventure Time
6 Seis Dias Cierre con 6 dias de aviso, agosto 2013
7 Afterlife Comunidad, FusionFall Retro/Legacy, OpenFusion

MapleStory 2: "El Mundo Que Construimos Juntos"

# Titulo Contenido
1 El Siguiente Nivel De MapleStory 1 a la vision 3D de NSquare
2 Un Mundo de Cubos y Color Arte voxel, UGC, musica, housing
3 El Amanecer Coreano Lanzamiento Korea julio 2015, primeros problemas
4 La Conquista Global Lanzamiento global octubre 2018, hype de Twitch
5 La Tormenta Perfecta Declive: RNG, limites semanales, exodo
6 El Ultimo Despertar Expansion Awakening, demasiado tarde
7 Afterlife Cierre mayo 2020, emulador MS2Community

Crear Contenido Nuevo

Via Strapi Admin (recomendado)

  1. Ir a http://localhost:1337/admin
  2. Content Manager > Game / Documentary / Chapter
  3. Crear en un idioma, luego usar "Localization" para traducir

Via PostgreSQL (insercion directa)

Cuando la API de Strapi tiene restricciones de permisos, se puede insertar directamente en PostgreSQL. Cada contenido necesita 4 filas:

-- Draft EN
INSERT INTO games (document_id, title, slug, ..., locale)
VALUES ('unique_doc_id', 'Title', 'slug', ..., 'en');

-- Draft ES
INSERT INTO games (document_id, title, slug, ..., locale)
VALUES ('unique_doc_id', 'Titulo', 'slug', ..., 'es');

-- Published EN (con published_at)
INSERT INTO games (document_id, title, slug, ..., published_at, locale)
VALUES ('unique_doc_id', 'Title', 'slug', ..., NOW(), 'en');

-- Published ES (con published_at)
INSERT INTO games (document_id, title, slug, ..., published_at, locale)
VALUES ('unique_doc_id', 'Titulo', 'slug', ..., NOW(), 'es');

Para documentales, ademas de los inserts hay que crear las relaciones en las tablas _lnk:

INSERT INTO games_documentary_lnk (game_id, documentary_id) VALUES (game_id, doc_id);
INSERT INTO chapters_documentary_lnk (chapter_id, documentary_id, chapter_ord) VALUES (ch_id, doc_id, 1);

API Endpoints

La API de Strapi se consume desde Next.js via funciones en apps/web/src/lib/api.ts:

Funcion Descripcion
getGames(locale) Lista todos los juegos con portada
getGameBySlug(slug, locale) Juego con documental y capitulos
getDocumentaryByGameSlug(slug, locale) Documental completo de un juego

Todas las llamadas requieren el header Authorization: Bearer <STRAPI_API_TOKEN>.