Implementación completa del sitio JAILGAMES (bloques A–J)

Sitio estático generado con Eleventy (11ty) + Nginx en Docker:
- Plantillas Nunjucks con layout base, tarjetas y fichas individuales
- Datos de juegos en YAML, colección ordenada por fecha
- CSS con tema oscuro gaming y diseño responsive (3/2/1 columnas)
- Lightbox vanilla JS para capturas de pantalla
- Build multi-stage Docker (node:20-alpine → nginx:alpine)
- 2 juegos de ejemplo con imágenes SVG placeholder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-30 12:58:55 +02:00
parent 93e41baf26
commit e337d7bc45
29 changed files with 3680 additions and 0 deletions
+151
View File
@@ -0,0 +1,151 @@
# JAILGAMES
Sitio web estático para publicar y descargar juegos indie del estudio JAILGAMES.
Generado con **Eleventy (11ty)** y servido con **Nginx en Docker**.
---
## Requisitos previos
- **Node.js 18+** (para el build local)
- **Docker** + **Docker Compose** (para despliegue)
---
## Instalación
```bash
npm ci
```
---
## Desarrollo local
```bash
npm run serve
```
Abre [http://localhost:8080](http://localhost:8080) en el navegador.
Eleventy reconstruye automáticamente al guardar cambios.
---
## Build estático
```bash
npm run build
```
El resultado queda en `_site/`. Para limpiar:
```bash
npm run clean
```
---
## Añadir un juego nuevo
1. **Crear el archivo YAML** del juego:
```
src/games/<slug>.yaml
```
Copiar de un juego existente y modificar los campos. El `slug` es el identificador URL (solo letras minúsculas, números y guiones).
2. **Crear la carpeta de imágenes:**
```
static/games/<slug>/
```
Copiar: `logo.png` (o `.svg`), `screenshot-1.png`, `screenshot-2.png`, ...
3. **Crear la carpeta de descargas:**
```
downloads/<slug>/
```
Copiar los binarios: `<slug>-v<version>-<plataforma>.<ext>`
4. **Verificar** que las rutas en el YAML coinciden exactamente con los archivos copiados.
5. **Regenerar el sitio:**
```bash
npm run build
```
6. **Verificar localmente:**
```bash
npm run serve
```
Abrir [http://localhost:8080](http://localhost:8080) y comprobar el juego nuevo.
7. **Reconstruir el contenedor Docker:**
```bash
docker compose up --build -d
```
---
## Despliegue con Docker
```bash
docker compose up --build -d
```
Acceder en [http://localhost](http://localhost).
Para detener:
```bash
docker compose down
```
---
## Despliegue sin internet (ferias)
**En la máquina con internet:**
```bash
docker compose build
docker save jailgames-web:latest | gzip > jailgames-image.tar.gz
```
**Copiar** `jailgames-image.tar.gz` al portátil de la feria (USB).
**En el portátil de la feria (sin internet):**
```bash
gunzip -c jailgames-image.tar.gz | docker load
docker run -d -p 80:80 \
-v /ruta/local/downloads:/usr/share/nginx/html/downloads:ro \
--name jailgames jailgames-web:latest
```
Abrir [http://localhost](http://localhost) en cualquier navegador.
---
## Estructura de carpetas
```
jailgames/
├── src/
│ ├── _data/site.json # Datos globales del sitio
│ ├── _includes/
│ │ ├── base.njk # Layout base HTML
│ │ ├── game-card.njk # Tarjeta de juego (home)
│ │ └── game-page.njk # Ficha individual de juego
│ ├── games/ # Un archivo YAML por juego
│ ├── css/style.css # Estilos globales
│ ├── js/main.js # JS mínimo (lightbox)
│ ├── index.njk # Página principal
│ ├── game.njk # Generador de fichas individuales
│ └── 404.njk # Página de error 404
├── static/
│ ├── logo/ # Logo del sitio
│ └── games/<slug>/ # Imágenes de cada juego
├── downloads/<slug>/ # Binarios descargables
├── _site/ # Build generado (no versionar)
├── .eleventy.js # Configuración de Eleventy
├── package.json
├── Dockerfile
├── docker-compose.yml
└── nginx.conf
```