7cc5bddf738bb957511a694b2f3646156e7a61ee
Build & Deploy / build-and-deploy (push) Successful in 14s
- 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
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
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:
- Go to https://dev.twitch.tv/console/apps → Register Your Application
- Name:
Dostalgia(or anything), OAuth Redirect URL:http://localhost, Category: Other - Copy the Client ID and generate a Client Secret
- 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.
Languages
Java
62.2%
Svelte
24.7%
JavaScript
8.8%
CSS
3.4%
Dockerfile
0.5%
Other
0.4%