Portfolio
Índice en /proyectos y una ficha por repo. Esta página es una de ellas.

Hub web personal: front-end ligero a mano sin frameworks pesados, microservicios en PHP 8.3 FPM, Nginx y laboratorio interactivo.
Un hub con cara propia: temas (oscuro, cyberpunk, matrix, claro), langosta, galería, blog, chat, convertidor de imágenes, gasolineras, libro de visitas y este portfolio. No es un tema de WordPress ni un create-react-app vacío.
A personal hub with its own look: themes, gallery, blog, chat, image converter, fuel prices, guestbook and this portfolio. Not a WordPress theme and not an empty CRA.
nginx hace try_files $uri $uri.html $uri/ /pages/$uri.html, así /proyectos/dabot cae en pages/proyectos/dabot.html. El chrome (starfield, tema, idioma, mascota) lo inyecta site-shell.js.
nginx try_files maps /proyectos/dabot to pages/proyectos/dabot.html. Shared chrome (starfield, theme, language, mascot) comes from site-shell.js.
Índice en /proyectos y una ficha por repo. Esta página es una de ellas.
14 juegos en canvas. Ranking en api/game_tracker.php.
api/gallery.php y categorías. Los vídeos no van a GitHub.
Proxy same-origin a MITECO para no pelear con CORS.
Libro de visitas y chat global con login sencillo.
ES/EN, cuatro temas, FAB de atajos, PWA light (sw.js).
data/token.txt y data/config.ini están denegados en nginx y fuera del repo. El webhook de tuits lee el token del INI, no del código. Firebase web config es pública a propósito (restringida por referrer).
data/token.txt and data/config.ini are denied by nginx and absent from git. Tweet webhook reads the INI, not source. Firebase web config is public by design (HTTP-referrer restricted).