# Project Afterlife Plataforma de preservacion de videojuegos con documentales interactivos. Servidores privados de juegos que ya no existen, acompanados de documentales narrativos que cuentan su historia. ## Estado Actual | Servicio | Estado | Puerto | RAM | |----------|--------|--------|-----| | **Next.js 15** (frontend) | En linea | 3000 | ~111 MB | | **Strapi 5** (CMS) | En linea | 1337 | ~179 MB | | **PostgreSQL 16** | En linea | 5432 | ~57 MB | | **MinIO** (almacenamiento) | En linea | 9000/9001 | ~144 MB | | **Authentik** (SSO) | En linea | 9000 | ~512 MB | | **NieR Reincarnation** | Alpha | 80/443 | ~1 GB | | **Dragon Ball Online** | En configuracion | 22000-22010 | ~2 GB | | **MapleStory 2 - World** | En linea | 21001 | ~126 MB | | **MapleStory 2 - Login** | En linea | 20001 | ~100 MB | | **MapleStory 2 - Game Ch0** | En linea | 20003/21003 | ~341 MB | | **FusionFall** | En linea | 23000-23001 | ~254 MB | ## Soft Launch — Juegos Disponibles ### NieR Reincarnation - **Emulador**: [MariesWonderland](https://github.com/BillyCool/MariesWonderland) (C# .NET 10) - **Conexion**: `play.consultoria-as.com:80/443` (HTTP/gRPC HTTP/2) - **Cliente**: APK Android parcheado (via Google Colab) - **Documental**: "El Mundo de las Voces Perdidas" (en produccion) - **Estado**: Alpha — gameplay basico funcional ### Dragon Ball Online - **Emulador**: [DBO Global](https://github.com/dboglobal) (C++ / Windows) - **Conexion**: `play.consultoria-as.com:22000` - **Cliente**: DBO Global Client (Windows) - **Documental**: "La Tierra Sin Goku" (en produccion) - **Estado**: En configuracion — requiere VM Windows ### MapleStory 2 - **Emulador**: [Maple2](https://github.com/MS2Community/Maple2) (C# .NET 8) - **Conexion**: `play.consultoria-as.com:20001` - **Cliente**: MapleStory 2 Global Client + XML Patches - **Documental**: "El Mundo Que Construimos Juntos" (7 capitulos) - **Estado**: Online ### FusionFall - **Emulador**: [OpenFusion](https://github.com/OpenFusionProject/OpenFusion) (C++) - **Conexion**: `play.consultoria-as.com:23000` - **Cliente**: FusionFall Retro Client - **Documental**: "El Mundo Que No Queriamos Perder" (7 capitulos) - **Estado**: Online ## Arquitectura ### Multi-VM (Nueva Arquitectura) Cada componente corre en su propia VM para maximizar aislamiento y control: | VM | IP Privada | Puertos Públicos | Servicios | |----|-----------|------------------|-----------| | **vm-main** | `10.0.0.10` | `80, 443` | Web + Auth + CMS + PostgreSQL + MinIO + Nginx | | **vm-nier** | `10.0.0.70` | `80, 443` | NieR Reincarnation (MariesWonderland) | | **vm-dbo** | `10.0.0.80` | `22000-22010` | Dragon Ball Online (DBO Global) | | **vm-maple2** | `10.0.0.40` | `20001, 21001, 20003, 21003, 4000` | MapleStory 2 | | **vm-fusionfall** | `10.0.0.30` | `23000, 23001` | OpenFusion Server | ``` project-afterlife/ ├── apps/ │ ├── cms/ # Strapi 5 CMS (React 18) │ └── web/ # Next.js 15 frontend (React 19) ├── packages/ │ └── shared/ # Tipos TypeScript compartidos ├── servers/ │ ├── openfusion/ # Servidor FusionFall (C++) │ ├── maple2/ # Servidor MapleStory 2 (C# .NET 8) │ ├── nier-reincarnation/ # NieR Reincarnation (MariesWonderland .NET 10) │ └── dragonball-online/ # Dragon Ball Online (DBO Global C++) ├── services/ │ └── afc-bridge/ # Bridge API blockchain (Node.js) — legacy ├── blockchain/ │ ├── contracts/AfterCoin.sol # Contrato inteligente ERC-20 — legacy │ ├── genesis.json # Config genesis Geth — legacy │ └── Dockerfile # Nodo Geth — legacy ├── docker/ │ ├── docker-compose.main.yml # VM Principal (Web + Auth + CMS) │ ├── docker-compose.nier.yml # VM NieR Reincarnation │ ├── docker-compose.dbo.yml # VM Dragon Ball Online │ ├── docker-compose.fusionfall.yml # VM OpenFusion │ ├── docker-compose.maple2.yml # VM MapleStory 2 │ ├── docker-compose.dev.yml # Legacy: stack local completo │ ├── docker-compose.yml # Legacy: produccion monolitica │ ├── docker-compose.web.yml # Legacy: web separado │ ├── docker-compose.auth.yml # Legacy: auth separado │ └── nginx/ # Configuracion Nginx ├── scripts/ │ └── deploy-vm.sh # Script helper para deploy por VM ├── docs/ │ ├── architecture.md # Arquitectura tecnica detallada │ ├── architecture-vms.md # Documentacion multi-VM │ ├── game-servers.md # Setup de servidores de juegos │ ├── cms-content.md # Modelo de contenido CMS │ └── deployment.md # Guia de despliegue └── .github/workflows/ └── deploy.yml # CI/CD multi-VM ``` ### Stack Tecnologico | Componente | Tecnologia | Version | |-----------|-----------|---------| | Frontend | Next.js + TypeScript | 15.x | | UI | Tailwind CSS | v4 | | i18n | next-intl | 4.8.3 | | CMS | Strapi | 5.36.0 | | Base de datos (CMS) | PostgreSQL | 16 | | Base de datos (MS2) | MySQL | 8.0 | | Almacenamiento | MinIO (S3) | Latest | | Audio | Howler.js | 2.2.4 | | Animaciones | Framer Motion | 12.x | | Monorepo | npm workspaces + Turborepo | - | | CI/CD | GitHub Actions | - | | Reverse Proxy | Nginx | Alpine | ## Inicio Rapido ### Instalacion Limpia (Recomendado para Produccion) Ver `docs/clean-install.md` para la guia completa paso a paso. #### Resumen rapido **VM Principal** (Web + Auth + CMS): ```bash # 1. Preparar la VM (instala Docker, firewall, genera secrets) ./scripts/setup-main.sh # 2. Clonar y configurar git clone https://git.consultoria-as.com/consultoria-as/project-afterlife.git /opt/project-afterlife cd /opt/project-afterlife cp docker/.env.example docker/.env # Edita docker/.env con los secrets generados # 3. Instalar ./scripts/install.sh main ``` **VMs de Juegos** (una por juego): ```bash # Preparar VM de juego (ejemplo: NieR) ./scripts/setup-game-vm.sh nier # Clonar e instalar git clone ... /opt/project-afterlife cd /opt/project-afterlife ./scripts/install.sh nier ``` ### Stack Local Completo (Desarrollo / Monolito Legacy) Para desarrollo local donde todo corre en una sola maquina: #### Requisitos - Docker y Docker Compose v2+ - 8 GB RAM minimo (16 GB recomendado con todos los servidores) - 50 GB disco libre #### 1. Clonar y configurar ```bash git clone https://git.consultoria-as.com/consultoria-as/project-afterlife.git cd project-afterlife ``` #### 2. Crear archivo de entorno ```bash cp docker/.env.example docker/.env # Editar docker/.env con las claves necesarias ``` Variables requeridas en `docker/.env`: ```env # Base de datos DATABASE_NAME=afterlife DATABASE_USERNAME=afterlife DATABASE_PASSWORD=afterlife # MinIO MINIO_ROOT_USER=afterlife MINIO_ROOT_PASSWORD=afterlife123 # Strapi (generar con openssl rand -base64 32) APP_KEYS= API_TOKEN_SALT= ADMIN_JWT_SECRET= TRANSFER_TOKEN_SALT= JWT_SECRET= # API Token (crear en Strapi Admin > Settings > API Tokens) STRAPI_API_TOKEN= # Strapi URL publica PUBLIC_STRAPI_URL=http://localhost:1337 ``` #### 3. Levantar servicios base ```bash cd docker # Stack principal (CMS + Web) docker compose -f docker-compose.dev.yml up -d # NieR Reincarnation (requiere setup previo, ver docs/game-servers.md) docker compose -f docker-compose.nier.yml up -d # MapleStory 2 (requiere setup previo, ver docs/game-servers.md) docker compose -f docker-compose.maple2.yml up -d # Dragon Ball Online (requiere setup previo, ver docs/game-servers.md) docker compose -f docker-compose.dbo.yml up -d ``` #### 4. Setup inicial de Strapi 1. Abrir http://localhost:1337/admin 2. Crear usuario administrador 3. Ir a Settings > API Tokens > Create new API Token 4. Tipo: Full access, copiar el token a `STRAPI_API_TOKEN` en `.env` 5. Reiniciar el servicio web: `docker compose -f docker-compose.dev.yml restart web` #### 5. Verificar - **Frontend**: http://localhost:3000 - **CMS Admin**: http://localhost:1337/admin - **MinIO Console**: http://localhost:9001 ## Documentacion Completa | Documento | Descripcion | |-----------|------------| | [README.md](README.md) | Este archivo — vision general y estado | | [docs/architecture.md](docs/architecture.md) | Arquitectura tecnica detallada | | [docs/game-servers.md](docs/game-servers.md) | Setup y operacion de servidores de juegos | | [docs/cms-content.md](docs/cms-content.md) | Modelo de contenido CMS y documentales | | [docs/deployment.md](docs/deployment.md) | Guia de despliegue a produccion | | [docs/plans/](docs/plans/) | Documentos de diseno e implementacion | ## Rutas de la Web | Ruta | Descripcion | |------|------------| | `/es` o `/en` | Pagina principal con hero y ultimos juegos | | `/es/catalog` | Catalogo de juegos con filtros | | `/es/about` | Sobre el proyecto | | `/es/donate` | Pagina de donaciones | | `/es/games/[slug]` | Pagina individual de juego | | `/es/games/[slug]/documentary` | Documental interactivo | | `/es/login` | Iniciar sesion con Authentik | | `/es/profile` | Perfil de usuario | | `/es/server-status` | Estado de todos los servidores | ## Contenido en Base de Datos ### Juegos (Soft Launch) | Slug | Titulo | Estado | Documental | |------|--------|--------|------------| | `nier-reincarnation` | NieR Reincarnation | Alpha | En produccion | | `dragonball-online` | Dragon Ball Online | En configuracion | En produccion | | `maplestory2` | MapleStory 2 | Online | 7 capitulos | | `fusionfall` | FusionFall | Online | 7 capitulos | ### Documentales | Juego | Titulo | Capitulos | |-------|--------|-----------| | NieR Reincarnation | "El Mundo de las Voces Perdidas" | En produccion | | Dragon Ball Online | "La Tierra Sin Goku" | En produccion | | FusionFall | "El Mundo Que No Queriamos Perder" | 7 | | MapleStory 2 | "El Mundo Que Construimos Juntos" | 7 | Cada documental publicado tiene sus capitulos disponibles en ambos idiomas (ES/EN). ## Licencia Proyecto privado. Todos los derechos reservados. Los emuladores de juegos utilizados son proyectos open-source independientes con sus propias licencias.