This commit is contained in:
2026-02-07 18:47:06 +01:00
parent 862a361a3d
commit ddbe59ead6
10 changed files with 1060 additions and 0 deletions

176
docs/apis-comparison.md Normal file
View File

@@ -0,0 +1,176 @@
# Comparativa de APIs — cobertura, límites, coste y calidad
**Introducción**
Comparar APIs públicas y comerciales que aportan metadatos (covers, screenshots, géneros, desarrolladores), y datos de precio/ofertas. Las decisiones de integración deben priorizar cobertura, coste (preferencia: gratuito), calidad y facilidad de uso.
**Nota:** límites y condiciones pueden cambiar — verificar TOS antes de integración.
---
## Resumen por API
### IGDB (Internet Games Database)
- **Resumen:** Base de datos muy completa (propiedad de Twitch/Amazon) con endpoints para juegos, covers, screenshots, plataformas, ratings, compañías y más.
- **Autenticación / Requisitos:** OAuth vía Twitch (Client ID + Client Secret → token) — requiere cuenta Twitch y 2FA para registrar apps.
- **Datos principales:** covers, screenshots, genres, developers, ESRB/PEGI, platforms, videos, websites, age ratings, tags.
- **Rate limits / cuotas:** 4 peticiones/segundo; hasta 8 peticiones abiertas (si se excede → 429 Too Many Requests).
- **Fecha verificación:** 2026-02-07
- **TOS / Developer Agreement:** Twitch Developer Service Agreement — https://www.twitch.tv/p/legal/developer-agreement/
- **Cláusula clave:** "There is a rate limit of 4 requests per second. If you go over this limit you will receive a response with status code `429 Too Many Requests`." — https://api-docs.igdb.com/
- **Costes / modelo:** Gratuito para uso no comercial; acuerdos comerciales para partners (atribución en caso de partnership).
- **Enlace:** https://api-docs.igdb.com/
---
### RAWG
- **Resumen:** Gran base de datos (medio millón de juegos), buena para metadata general y enlaces a tiendas.
- **Autenticación / Requisitos:** API key en query string (`key=YOUR_API_KEY`).
- **Datos principales:** descripciones, screenshots, plataformas, géneros, ratings, enlaces a tiendas, playtime estimado.
- **Rate limits / cuotas:** Planes gratuitos con límites (ej. free tier limitada) y planes comerciales con mayor cuota (p.ej. hasta 50k requests/mes en planes de negocio).
- **Fecha verificación:** 2026-02-07
- **TOS / Developer Agreement:** https://rawg.io/tos_api
- **Cláusula clave:** "Free for personal use as long as you attribute RAWG as the source of the data and/or images and add an active hyperlink from every page where the data of RAWG is used. No data redistribution." — https://rawg.io/tos_api
- **Costes / modelo:** Free tier para proyectos personales; planes comerciales (pago mensual) para uso en productos con gran tráfico.
- **Enlace:** https://rawg.io/apidocs
---
### TheGamesDB
- **Resumen:** Base de datos comunitaria para juegos y artwork, con API pública v2.
- **Autenticación / Requisitos:** Registro y uso de API key (ver docs); repositorio público del proyecto (GPLv3 para el código del servidor).
- **Datos principales:** imágenes, covers, plataformas, metadatos básicos.
- **Rate limits / cuotas:** No siempre documentados públicamente (consultar docs/registro).
- **Fecha verificación:** 2026-02-07
- **TOS / Developer Agreement:** No documentado públicamente — consultado https://api.thegamesdb.net/ y https://github.com/TheGamesDB/TheGamesDBv2 (código bajo GPL3.0)
- **Cláusula clave:** No documentado públicamente — verificar con el equipo de TheGamesDB antes de uso comercial/redistribución.
- **Enlace:** https://api.thegamesdb.net/
---
### ScreenScraper
- **Resumen:** Servicio francés orientado a frontends, con enorme cantidad de media y opciones de scraping.
- **Autenticación / Requisitos:** Cuenta en ScreenScraper; modelo de soporte/donación que habilita límites mayores.
- **Datos principales:** screenshots, boxart, videos, manuals, metadata comunitaria.
- **Rate limits / cuotas:** Planes por donación (ej.: 50.000 scrapes/día en niveles básicos; aumentos en niveles superiores).
- **Fecha verificación:** 2026-02-07
- **TOS / Developer Agreement:** https://www.screenscraper.fr/
- **Cláusula clave:** "Niveles de donación ofrecen límites distintos (p.ej. 50.000 scrapes/día en nivel Bronze); consultar la cuenta para límites exactos." — https://www.screenscraper.fr/
- **Costes / modelo:** Donación / suscripción para aumentar cuotas y velocidad.
- **Enlace:** https://www.screenscraper.fr/
---
### MobyGames
- **Resumen:** Base histórica con screenshots, covers, reviews y credits; muy usada por investigación y metadata profunda.
- **Autenticación / Requisitos:** API y/o MobyPlus; la API requiere registro y suscripción.
- **Datos principales:** screenshots, covers, credits, precios históricos limitados.
- **Rate limits / cuotas:** Non-commercial API requests are limited to 720 per hour (one every five seconds) with a max request rate of 1 per/second.
- **Fecha verificación:** 2026-02-07
- **TOS / Developer Agreement:** https://www.mobygames.com/api/subscribe/
- **Cláusula clave:** "Non-commercial API requests are limited to 720 per hour (one every five seconds) with a max request rate of 1 per/second." — https://www.mobygames.com/api/subscribe/
- **Costes / modelo:** Acceso vía suscripción / MobyPro; contactar para condiciones comerciales.
- **Enlace:** https://www.mobygames.com/api/subscribe/
---
### PriceCharting
- **Resumen:** Fuente especializada en historial de precios para juegos físicos y coleccionables.
- **Autenticación / Requisitos:** API documentada en el sitio; el acceso completo requiere suscripción / token pagado.
- **Datos principales:** precios históricos, condiciones (complete, loose), plataforma y comparables de mercado.
- **Rate limits / cuotas:** No siempre publicadas públicamente; contactar a PriceCharting para detalles.
- **Fecha verificación:** 2026-02-07
- **TOS / Developer Agreement:** https://www.pricecharting.com/api-documentation (ver también https://www.pricecharting.com/page/terms-of-service)
- **Cláusula clave:** "API's are a premium tool. You must have a paid subscription to access the API." — https://www.pricecharting.com/api-documentation
- **Costes / modelo:** Servicio comercial (licencias / API keys pagadas).
- **Enlace:** https://www.pricecharting.com/api-documentation
---
### IsThereAnyDeal (Itad)
- **Resumen:** Agregador de ofertas con histórico y mapeo de keys/tiendas; útil para tracking de ofertas digitales.
- **Autenticación / Requisitos:** API Key (docs en https://docs.isthereanydeal.com/).
- **Datos principales:** price history, deals, store IDs, game mappings.
- **Rate limits / cuotas:** Access to API is rate limited and subject to change (limits provided in headers); contactar si necesita mayor cuota.
- **Fecha verificación:** 2026-02-07
- **TOS / Developer Agreement:** https://docs.isthereanydeal.com/
- **Cláusula clave:** "You MUST NOT change provided data in any way. You SHOULD provide a link to IsThereAnyDeal.com or mention IsThereAnyDeal API." — https://docs.isthereanydeal.com/
- **Costes / modelo:** Free tier; acuerdos comerciales para uso intensivo.
- **Enlace:** https://docs.isthereanydeal.com/
---
### eBay
- **Resumen:** Fuente de datos de mercado (listings, precios vendidos) para estimar valor real de mercado.
- **Autenticación / Requisitos:** Registro en eBay Developers Program; claves y OAuth para endpoints de venta/completed items.
- **Datos principales:** listados, historiales vendidos (completed), especificaciones de artículos.
- **Rate limits / cuotas:** Límite de llamadas por aplicación; eBay puede limitar y suspender acceso si se exceden los límites.
- **Fecha verificación:** 2026-02-07
- **TOS / Developer Agreement:** https://developer.ebay.com/join/api-license-agreement
- **Cláusula clave:** "You may not sell, rent, trade, distribute, lease (or otherwise commercialize), copy, store or modify eBay Content, other than for the purposes allowed by this API License Agreement." y "eBay reserves the right to limit the number of periodic API calls you are allowed to make." — https://developer.ebay.com/join/api-license-agreement
- **Costes / modelo:** Free para desarrolladores con límites; uso intensivo o comerciales pueden requerir acuerdos o certificaciones.
- **Enlace:** https://developer.ebay.com/
---
## Tabla resumida
| API | Data types | Auth | Free / Paid | Fecha verificación | Licencia / Nota legal | Notes |
| -------------- | ------------------------------------------------------- | -------------------------------- | ------------------------------------------ | ------------------ | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| IGDB | covers, screenshots, genres, ESRB, companies, platforms | OAuth via Twitch | Free (non-commercial); commercial partners | 2026-02-07 | TOS: https://www.twitch.tv/p/legal/developer-agreement/ | 4 rps rate limit; muy completa |
| RAWG | games, screenshots, stores, ratings, playtime | API key (query param) | Free tier; paid commercial plans | 2026-02-07 | TOS: https://rawg.io/tos_api (atribución requerida) | Free for personal use; atribución requerida; no redistribución |
| TheGamesDB | images, basic metadata | API key (registro) | Free / community | 2026-02-07 | Repo/TOS: https://github.com/TheGamesDB/TheGamesDBv2 (codigo GPL-3.0) / TOS no documentada públicamente | No TOS público claro; código backend GPL3.0 |
| ScreenScraper | images, videos, manuals | Account + token (donation tiers) | Donation / paid tiers | 2026-02-07 | TOS: https://www.screenscraper.fr/ (donation/tiers) | Donación/premium para mayores cuotas (p.ej. 50k/día) |
| PriceCharting | price history | API key / commercial | Paid | 2026-02-07 | Paid: https://www.pricecharting.com/api-documentation | API premium; requiere suscripción |
| IsThereAnyDeal | deals, price history | API key | Free tier / paid | 2026-02-07 | TOS: https://docs.isthereanydeal.com/ | Requiere atribución; prohíbe modificar datos |
| MobyGames | screenshots, credits, covers | Subscribe / API key | Paid / subscription | 2026-02-07 | Paid/Subscribe: https://www.mobygames.com/api/subscribe/ | Access via subscription; non-commercial rate limits documented |
| eBay | listings, sold data | eBay Dev keys / OAuth | Free (with limits) | 2026-02-07 | TOS: https://developer.ebay.com/ | Terms restrict distribution; API License Agreement |
---
## Conclusión y recomendación para MVP
Recomiendo un **set inicial de APIs (priorizado)**: **IGDB, RAWG, TheGamesDB, ScreenScraper, PriceCharting, IsThereAnyDeal.**
- **Por qué:** IGDB + RAWG cubren **amplia metadata** y campos útiles (genres, plataformas, covers); TheGamesDB aporta **artwork comunitario**; ScreenScraper cubre assets específicos para ROM/frontends (videos/logos); PriceCharting e IsThereAnyDeal cubren **precios físicos y ofertas digitales** respectivamente.
- **Prioridad:** 1) IGDB (calidad + licencia accesible) 2) RAWG (cobertura y datos de tiendas) 3) TheGamesDB (artwork) 4) ScreenScraper (media específica) 5) PriceCharting (precios físicos) 6) IsThereAnyDeal (ofertas digitales).
---
## Vacíos y verificación pendiente
- **APIs que requieren suscripción / acuerdos comerciales:** PriceCharting (API premium, requiere suscripción), MobyGames (MobyPro/API requiere suscripción), EmuMovies (servicio comercial con TOS y cuentas), y en casos especiales eBay (certificaciones / acuerdos adicionales para ciertos permisos).
- **PriceCharting:** la documentación de la API existe pero el acceso completo está sujeto a registro/pago; no se publicó límite público durante la verificación.
- **MobyGames:** API y límites requieren suscripción/registro; hay que contactar para condiciones comerciales.
- **eBay:** múltiples APIs y límites por endpoint; requiere revisar caso de uso específico y cumplimiento del API License Agreement.
- **Notas:** Algunas APIs (ScreenScraper) usan modelos por donación/premium para aumentar cuotas; en APIs sin límites públicos, contactar al proveedor para confirmar condiciones.
---
## Fuentes
- IGDB API docs: https://api-docs.igdb.com/ — TOS: https://www.twitch.tv/p/legal/developer-agreement/
- RAWG API & TOS: https://rawg.io/apidocs / https://rawg.io/tos_api
- TheGamesDB API / repo: https://api.thegamesdb.net/ / https://github.com/TheGamesDB/TheGamesDBv2/blob/master/LICENSE
- ScreenScraper: https://www.screenscraper.fr/
- MobyGames API: https://www.mobygames.com/api/subscribe/
- PriceCharting API & Terms: https://www.pricecharting.com/api-documentation / https://www.pricecharting.com/page/terms-of-service
- IsThereAnyDeal docs/TOS: https://docs.isthereanydeal.com/
- eBay API License Agreement: https://developer.ebay.com/join/api-license-agreement
## Metadatos
- **Autor:** Quasar (investigación automatizada)
- **Fecha verificación:** 2026-02-07
- **Última actualización:** 2026-02-07
---
**Nota:** Si quieres, puedo preparar una matriz técnica (endpoints concretos, ejemplos de requests y una PoC de integración para 2 APIs prioritarias).

View File

@@ -0,0 +1,153 @@
# Análisis comparativo — Proyectos y herramientas de gestión/emulación
**Introducción**
Breve comparación de proyectos y herramientas relevantes para la gestión de colecciones de videojuegos (gestores de librerías, frontends, herramientas de verificación y proveedores de media). El objetivo es resumir licencias, funcionalidades, fuentes de metadata/artwork, requisitos y riesgos legales para orientar decisiones de producto.
---
## Resumen por proyecto
### Playnite
- **Resumen:** Gestor de librerías de videojuegos para PC con integración de tiendas y soporte de emulación mediante lanzamiento externo y plugins.
- **Licencia:** MIT — https://github.com/JosefNemec/Playnite/blob/master/LICENSE.md
- **Funcionalidades principales:** Importación de bibliotecas (Steam, GOG, Epic...), fullscreen, temas, extensiones y sincronización; soporte para descargar metadata via IGDB.
- **Fuentes de metadata/artwork:** IGDB (integración oficial) y plugins comunitarios.
- **Requisitos:** Windows (oficial), portable; extensible vía plugins.
- **Riesgos/limitaciones legales:** No distribuye ROMs; integración de APIs externa sujeta a TOS y a límites de uso.
- **Enlace:** https://playnite.link / https://github.com/JosefNemec/Playnite
---
### LaunchBox (incluye BigBox)
- **Resumen:** Frontend para Windows con versión gratuita y Premium (BigBox) enfocada a experiencias tipo arcade/cabinet.
- **Licencia:** propietario / no LICENSE público — https://www.launchbox-app.com/
- **Funcionalidades principales:** Import masivo, gestión de metadatos, BigBox UI, soporte para EmuMovies y otros proveedores multimedia.
- **Fuentes de metadata/artwork:** EmuMovies (videos), TheGamesDB, y repos comunitarios.
- **Requisitos:** Windows; cuenta/compra para funcionalidades Premium.
- **Riesgos/limitaciones legales:** Uso de assets con licencias comerciales (EmuMovies); verificar términos de redistribución.
- **Enlace:** https://www.launchbox-app.com/
---
### OpenEmu
- **Resumen:** Frontend/emulador para macOS con enfoque en experiencia nativa y organización automática de la librería.
- **Licencia:** no especificada / requiere verificación manual — https://github.com/OpenEmu/OpenEmu (Nota: Wikipedia indica "BSD" — https://en.wikipedia.org/wiki/OpenEmu)
- **Funcionalidades principales:** Biblioteca automática, plugins de cores, mapping de controladores, screenshots y artwork.
- **Fuentes de metadata/artwork:** Integraciones comunitarias (ej. TheGamesDB) y edición manual.
- **Requisitos:** macOS (Xcode para builds); cores externos.
- **Riesgos/limitaciones legales:** Plataforma macOS únicamente; confirmar licencia antes de integrar código directamente.
- **Enlace:** https://openemu.org / https://github.com/OpenEmu/OpenEmu
---
### EmulationStation
- **Resumen:** Frontend ligero y altamente configurable, popular en Raspberry Pi y RetroPie.
- **Licencia:** MIT — https://github.com/Aloshi/EmulationStation/blob/master/LICENSE.md
- **Funcionalidades principales:** UI temable, scrapers integrados, gamelist.xml para metadatos, configuraciones para múltiples emuladores.
- **Fuentes de metadata/artwork:** Scraper integrado (configurable), TheGamesDB y otras fuentes comunitarias.
- **Requisitos:** Multi-OS (Raspberry Pi / Linux / Windows builds disponibles).
- **Riesgos/limitaciones legales:** Scraping indiscriminado puede violar TOS; siempre respetar orígenes y atribución.
- **Enlace:** http://emulationstation.org / https://github.com/Aloshi/EmulationStation
---
### RetroArch (Libretro)
- **Resumen:** Frontend multiplataforma que ejecuta "cores" (emuladores) mediante la API libretro.
- **Licencia:** GPL3.0 — https://github.com/libretro/RetroArch/blob/master/COPYING
- **Funcionalidades principales:** Emulación por cores, shaders, runahead, netplay, gestión de cores y descargas.
- **Fuentes de metadata/artwork:** Descargador de contenido; ecosistema amplio.
- **Requisitos:** Multi-OS (Windows/macOS/Linux/Android/Consoles).
- **Riesgos/limitaciones legales:** GPLv3; atención al empaquetado de cores con licencias mixtas.
- **Enlace:** https://www.retroarch.com / https://github.com/libretro/RetroArch
---
### ROMVault
- **Resumen:** Herramienta orientada a la verificación y reparación de sets mediante DATs (No-Intro/Redump/TOSEC).
- **Licencia:** no especificada / requiere verificación manual — http://romvault.com/ (repositorio: https://github.com/gjefferyes/RomVault — sin LICENSE detectado)
- **Funcionalidades principales:** Escaneo por DAT, checksums (CRC/MD5/SHA1), reparación (fixing), soporte CHD/zip/7z.
- **Fuentes de metadata/artwork:** DATs de No-Intro/Redump/TOSEC; DatVault como servicio complementario.
- **Requisitos:** Windows principal; compatibilidad CLI en Linux.
- **Riesgos/limitaciones legales:** Herramienta de verificación (no distribución); respetar licencias de DAT y políticas de los repos.
- **Enlace:** http://romvault.com/ / https://github.com/gjefferyes/RomVault
---
### No-Intro / Redump (DATs)
- **Resumen:** Colecciones de DATs/índices usados para verificar integridad de dumps de ROMs y CDs; son bases de referencia comunitarias.
- **Licencia:** no especificada / requiere verificación manual — No-Intro: https://datomatic.no-intro.org/stuff/terms.txt ; Redump: https://redump.org/
- **Funcionalidades principales:** DATs para verificación, históricos y tickets de cambios.
- **Requisitos:** Uso local; descarga de DATs públicas o vía servicios como DatVault.
- **Riesgos/limitaciones legales:** No alojan ROMs ni ayudan a buscarlos; su uso debe ser para verificación y preservación.
- **Enlace:** https://datomatic.no-intro.org/ / https://redump.org/
---
### EmuMovies
- **Resumen:** Proveedor comercial de videos, música y artwork de alta calidad orientado a frontends.
- **Licencia:** servicio comercial / TOS (restricción en redistribución) — https://www.emumovies.com/terms
- **Funcionalidades principales:** Video snaps, intros, boxes y packs optimizados para frontends.
- **Fuentes de metadata/artwork:** Producción propia y contribuciones verificadas por la comunidad.
- **Requisitos:** Cuenta/suscripción para acceso ampliado.
- **Riesgos/limitaciones legales:** Contenido con licencia comercial; revisar términos antes de integrar/redistribuir.
- **Enlace:** https://www.emumovies.com/
---
## Tabla comparativa (resumen)
| Proyecto | Licencia | OS objetivo | Gestión ROMs | Scraper / Metadatos | Emulación | Price tracking | Extensible | Notas legales |
| ---------------- | -------------------------------------------------------------------------------------------------------- | ------------------- | ----------------- | ---------------------- | ----------------- | -------------: | ------------- | ------------------------------------------ |
| Playnite | MIT — https://github.com/JosefNemec/Playnite/blob/master/LICENSE.md | Windows | Import & librería | IGDB (plugins) | Lanza emuladores | No | Sí (plugins) | No distribuye ROMs; depende de APIs |
| LaunchBox | Proprietary (no LICENSE público) — https://www.launchbox-app.com/ | Windows | Import & BigBox | EmuMovies, TheGamesDB | Lanza emuladores | No | Sí | Contenido premium / licencias comerciales |
| OpenEmu | no especificada / requiere verificación manual — https://github.com/OpenEmu/OpenEmu (ver Wikipedia: BSD) | macOS | Library auto | TheGamesDB, manual | Cores integrados | No | Módulos/cores | macOS-only; verificar LICENSE |
| EmulationStation | MIT — https://github.com/Aloshi/EmulationStation/blob/master/LICENSE.md | RPi/Linux/Win | Gamelist.xml | Scraper integrado | Lanza emuladores | No | Theming | Uso comunitario; cuidado con scraping |
| RetroArch | GPL3.0 — https://github.com/libretro/RetroArch/blob/master/COPYING | Multi-OS | UI + Content | Content Downloader | Emulación (cores) | No | Cores | GPL (ver compatibilidades) |
| ROMVault | no especificada / requiere verificación manual — http://romvault.com/ | Windows/Linux (CLI) | Verificación DAT | DATs (No-Intro/Redump) | No | No | Limitado | Foco en integridad; no distribuye ROMs |
| ClrMamePro | no especificada / requiere verificación manual — https://www.clrmamepro.net/ | Windows | Verificación sets | DATs | No | No | Limitado | Documentación dispersa; verificar licencia |
---
### ClrMamePro
- **Resumen:** Herramienta histórica para verificación de sets MAME; orientada a usuarios avanzados.
- **Licencia:** no especificada / requiere verificación manual — https://www.clrmamepro.net/
- **Funcionalidades principales:** Verificación/gestión de sets, renombrado y mirroring de DATs.
## Vacíos y notas de verificación
- Algunos proveedores de pricing/metadata (PriceCharting, MobyGames) requieren registro o acuerdos comerciales para acceso a API completo; no siempre publican límites de uso.
- ROMVault/OpenEmu/No-Intro/Redump y otras herramientas de referencia requieren verificación manual de licencia antes de integrar o redistribuir assets.
---
## Fuentes
- Playnite: https://playnite.link / Repositorio y LICENSE: https://github.com/JosefNemec/Playnite/blob/master/LICENSE.md
- LaunchBox: https://www.launchbox-app.com/
- OpenEmu: https://openemu.org / Repo: https://github.com/OpenEmu/OpenEmu (verificar LICENSE en repo; Wikipedia indica BSD)
- EmulationStation: http://emulationstation.org / LICENSE: https://github.com/Aloshi/EmulationStation/blob/master/LICENSE.md
- RetroArch / Libretro: https://www.retroarch.com/ / LICENSE (GPLv3): https://github.com/libretro/RetroArch/blob/master/COPYING
- ROMVault: http://romvault.com/ (repositorio: https://github.com/gjefferyes/RomVault — sin LICENSE detectado)
- No-Intro / DAT-o-MATIC (Terms): https://datomatic.no-intro.org/stuff/terms.txt
- Redump: https://redump.org/ (política y FAQ)
- EmuMovies (TOS / Registration Terms): https://www.emumovies.com/terms
- TheGamesDB (API + repo): https://api.thegamesdb.net/ / https://github.com/TheGamesDB/TheGamesDBv2/blob/master/LICENSE
## Metadatos
- **Autor:** Quasar (investigación automatizada)
- **Última actualización:** 2026-02-07
- **Fecha verificación:** 2026-02-07
---
**Resumen ejecutivo:** Para un MVP conviene priorizar integraciones con fuentes de licencia clara y permisiva (IGDB, TheGamesDB) y soluciones OSS (Playnite, RetroArch) mientras que la integración de proveedores comerciales (EmuMovies, PriceCharting) exige acuerdos y verificación de TOS.

70
docs/lessons-learned.md Normal file
View File

@@ -0,0 +1,70 @@
# Lecciones aprendidas y recomendaciones técnicas
**Lista priorizada de funcionalidades útiles para el MVP** (justificación breve)
1. **Import local y verificación básica (hashes/DATs)** — esencial: permite que el usuario confirme posesión y garantiza integridad. (Crítico)
2. **Enriquecimiento de metadata con fallback en cadena** (IGDB → RAWG → TheGamesDB → ScreenScraper) — mejora cobertura y calidad; reduce fallos por datos incompletos.
3. **Interfaz de biblioteca básica + búsqueda y filtros** — UX central para adopción temprana.
4. **Caching de artwork y metadatos (LRU)** — reduce llamadas a APIs y mejora rendimiento offline.
5. **DAT verification y reporting (NoIntro/Redump)** — importante para usuarios avanzados que quieren sets consistentes.
6. **Campos personalizados (compra, precio, notas)** — capturar historial de propiedad o compras.
7. **Integración opcional de price tracking** (PriceCharting / IsThereAnyDeal / eBay) — útil pero no crítico para primer lanzamiento.
---
**Patrones comunes observados**
- Import local + escaneo incremental (evitar rehash completo en cada arranque).
- Verificación mediante DATs y checksums (CRC/MD5/SHA1) con distinto "nivel" de escaneo (rápido vs. exhaustivo).
- Cadena de fallback para scrapers: API principal → API secundaria → recurso comunitario → fallback manual.
- Cache de artwork con fallback offline y opción de refresco manual.
- Campos personalizados para historial de compra y notas, frecuentemente añadidos por usuarios.
---
**Recomendaciones técnicas (stack y librerías útiles)**
- **Arquitectura:** Backend (Node.js + TypeScript / Python Flask) + Postgres (JSONB para campos flexibles) + Redis para caching y rate-limiting.
- **Checksum / DATs:** usar librerías nativas (Node: `crypto`, Python: `hashlib`) y utilidades (chdman para CHD, libarchive/jszip para archives); para DAT parsing, reusar implementaciones existentes (RomVault/Dat readers) si licencia lo permite.
- **Cache / LRU:** Redis con TTL o librerías LRU (node-lru-cache) para assets en memoria; S3 compatible para almacenamiento de artwork en producción.
- **Queue / Background jobs:** Bull / Sidekiq para trabajos de scraping y actualización masiva.
- **Rate limiting:** Implementar token bucket / backoff y conteo por API (respetar 429 y Retry-After).
- **Herramientas:** `sharp` para procesamiento de imágenes; `axios` / `node-fetch` con retries; `pm2` para procesos en producción.
---
**Puntos a evitar**
- No implementar características que faciliten la piratería (búsqueda/descarga automática de ROMs, enlaces a repos de ROMs).
- Evitar scraping masivo sin acuerdo (puede violar TOS y exponer a bloqueos legales).
- Evitar dependencias propietarias críticas si no se puede negociar un contrato claro.
---
### PoC propuesta
PoC propuesta: Backend mínimo (Node/Express) que implemente search IGDB + RAWG y cache LRU de 24h
- Backend mínimo: Node/Express (JavaScript o TypeScript) con endpoints REST simples.
- Endpoint primario: `GET /api/search?query=<término>` que combine resultados de IGDB (primario) y RAWG (fallback) y normalice campos.
- Cache: LRU en memoria con TTL 24h (ej. `node-lru-cache`) y opción a Redis con TTL para producción.
- Control de uso: contadores por API y por usuario/IP, circuit breaker y backoff (respetar 429 y header `Retry-After`).
- Nota: incluir endpoints de privacidad en PoC: GET /api/me/export, DELETE /api/me/delete; retención de logs de aceptación = 2 años.
- Métrica y plan de pruebas: desplegar PoC y medir 1 semana para observar 429, latencia y ratio de cache hit/miss; ajustar estrategia de caching y necesidad de acuerdos comerciales.
- Resultado esperado: validar límites reales, estimar coste y decidir si se requieren acuerdos/premium APIs.
**Nota sobre licencias:** Si se incorpora código o herramientas bajo GPL, documentar las implicaciones de redistribución y empaquetado; preferir licencias permisivas (MIT/BSD) para componentes que se redistribuirán o empaquetarán con el servicio. Realizar verificación de compatibilidad de licencias y documentar cualquier restricción (compatibilidad de licencias).
## Fuentes y lecturas recomendadas
- Proyectos principales: Playnite, LaunchBox, OpenEmu, RetroArch (ver sus repos y docs)
- Herramientas de verificación: ROMVault, NoIntro (datomatic), Redump
- APIs y pricing: IGDB, RAWG, TheGamesDB, ScreenScraper, PriceCharting, IsThereAnyDeal
## Metadatos
- **Autor:** Quasar (investigación automatizada)
- **Última actualización:** 2026-02-07
- **Fecha verificación:** 2026-02-07
**Resumen:** Priorizar import local + verificación + metadata (con fallbacks) y construir una arquitectura que respete límites de APIs y licencias; las integraciones de precio/ofertas pueden añadirse en una fase posterior tras validar acuerdos comerciales.