aad4ec21a675990792589a2a2ad7389606724648
Dostalgia
A nostalgic DOS game hub — upload, scrape artwork, and play classic DOS games directly in the browser via js-dos.
Quick Start (Docker)
docker build -t dostalgia .
docker run -p 8765:8765 -v $(pwd)/data:/data dostalgia
Development
Terminal 1 — Go API:
DOSTALGIA_DEV=1 go run .
Terminal 2 — Frontend dev server:
cd frontend && npm install && npm run dev
Architecture
- Backend: Single Go binary. No database — each game is a directory with a
game.jsonfile. - Frontend: Svelte SPA, embedded in the Go binary at build time.
- Emulation: js-dos v8 loaded from CDN, runs DOSBox in WebAssembly.
- Storage:
/data/games/{id}/— containsgame.json,.jsdosbundle, and cover art.
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",
"publisher": "id Software",
"description": "The iconic first-person shooter...",
"bundle_type": "standard",
"bundle_file": "doom.jsdos",
"has_cover": true,
"ready": true
}
Languages
Java
62.2%
Svelte
24.7%
JavaScript
8.8%
CSS
3.4%
Dockerfile
0.5%
Other
0.4%