Initial commit: NovelasVM platform with multi-engine support and Umineko Web integration

This commit is contained in:
2026-06-14 23:51:40 +00:00
commit 8ded9cc4c8
24 changed files with 3688 additions and 0 deletions

79
docs/API.md Normal file
View File

@@ -0,0 +1,79 @@
## Catalogo global
### GET /games.json
Devuelve el catalogo completo de novelas publicadas.
```json
{
"games": [
{
"slug": "demo",
"title": "The Question",
"subtitle": "Demo oficial de Ren'Py",
"engine": "renpy",
"description": "...",
"cover": "/games/demo/web-presplash.jpg",
"version": "7.0",
"author": "Ren'Py Team",
"createdAt": "2026-06-14T10:35:09Z",
"entryPoint": "/games/demo/index.html",
"coopCoep": true
}
],
"updatedAt": "2026-06-14T22:07:10Z",
"version": "1.0"
}
```
## Metadatos por juego
### GET /games/<slug>/game.json
Generado por `build-novela.sh`. Contiene metadatos y configuracion del motor.
| Campo | Tipo | Descripcion |
|-------|------|-------------|
| `slug` | string | Identificador URL-friendly |
| `title` | string | Titulo mostrado |
| `subtitle` | string | Subtitulo opcional |
| `engine` | string | Motor: renpy, unity, web, onscripter, umineko-ru |
| `description` | string | Descripcion corta |
| `cover` | string | URL de la portada |
| `version` | string | Version del juego |
| `author` | string | Autor |
| `createdAt` | string ISO | Fecha de publicacion |
| `entryPoint` | string | URL para jugar |
| `coopCoep` | boolean | Si requiere headers COOP/COEP |
## meta.json de entrada
Archivo opcional en `/opt/novelas/projects/<slug>/meta.json`:
```json
{
"title": "Mi Novela",
"subtitle": "Subtitulo",
"description": "Descripcion.",
"author": "Autor",
"version": "1.0",
"cover": "/games/mi-novela/cover.jpg"
}
```
## Headers HTTP
### COOP/COEP (solo Ren'Py)
```
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
```
Se aplican mediante snippets en `/etc/nginx/snippets/novelas-games/<slug>.conf`.
## Cache
- `games.json` y `game.json`: `no-store, no-cache, must-revalidate`.
- Assets estaticos: `public, immutable`, 30 dias.