Files
dostalgia/README.md
T
Hermes Agent 7cc5bddf73
Build & Deploy / build-and-deploy (push) Successful in 14s
docs: add IGDB setup guide, .env.example, and .gitignore for public release
- Add .env.example with Twitch credential instructions
- Update docker-compose.yml to use env_file instead of inline comments
- Add IGDB Metadata section to README with setup walkthrough
- Add .env / .env.local to .gitignore to prevent secret leaks
2026-06-10 16:29:50 +02:00

2.8 KiB

Dostalgia

A nostalgic DOS game hub. Upload your old DOS games, scrape artwork, and play them directly in the browser via js-dos (WebAssembly DOSBox).

Quick Start

With Docker Compose (easiest)

# 1. (Optional) Enable IGDB metadata auto-scrape
cp .env.example .env
# Edit .env with your Twitch credentials (see IGDB section below)

# 2. Build & run
docker compose up -d

Open http://localhost:8765

With Docker

docker build -t dostalgia .
docker run -p 8765:8765 -v $(pwd)/data:/data \
  -e TWITCH_CLIENT_ID=your_id \
  -e TWITCH_CLIENT_SECRET=your_secret \
  dostalgia

Development (without Docker)

Terminal 1 — Frontend dev server:

cd frontend && npm install && npm run dev

Terminal 2 — Quarkus dev server:

mvn quarkus:dev

Open http://localhost:5173 (Vite proxies API calls to Quarkus on port 8765)

Production build (local)

cd frontend && npm install && npm run build
mvn package -DskipTests
java -jar target/quarkus-app/quarkus-run.jar

Architecture

  • Backend: Quarkus (Java 21, JAX-RS) — ~5 REST resource classes, zero database
  • Frontend: Svelte 5 SPA with hash-based routing
  • Emulation: js-dos v8 loaded from CDN, runs DOSBox in WebAssembly
  • Storage: JSON-per-game under /data/games/{id}/game.json

API

Method Path Description
GET /api/games List all games
GET /api/games/:id Get game details
PATCH /api/games/:id Update game metadata
DELETE /api/games/:id Delete a game
POST /api/upload Upload a game ZIP (multipart)
POST /api/games/:id/cover Upload cover art
GET /api/igdb/search?q= Search IGDB (placeholder)

Game JSON Schema

{
  "id": "doom",
  "title": "Doom",
  "year": 1993,
  "genre": "FPS",
  "developer": "id Software",
  "bundle_file": "doom.jsdos",
  "has_cover": true,
  "ready": true
}

IGDB Metadata (Optional)

Dostalgia can auto-populate game metadata (year, genre, developer, cover art, screenshots, videos) from the IGDB database. This requires a Twitch API application.

Setup:

  1. Go to https://dev.twitch.tv/console/appsRegister Your Application
  2. Name: Dostalgia (or anything), OAuth Redirect URL: http://localhost, Category: Other
  3. Copy the Client ID and generate a Client Secret
  4. Provide them via environment variables:
Method How
Docker run -e TWITCH_CLIENT_ID=xxx -e TWITCH_CLIENT_SECRET=yyy
Docker Compose Copy .env.example to .env and fill in the values
Local dev export TWITCH_CLIENT_ID=xxx TWITCH_CLIENT_SECRET=yyy

IGDB features degrade gracefully — if credentials aren't set, uploads and metadata editing still work, just without auto-scrape.