Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
Inspect any World of Warcraft character in seconds - gear and item level, Mythic+ rating, raid progression and Warcraft Logs parse percentiles.
Translation pending
GamesTypeScript · CSSGitHub @Christoffer-MOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Loading the full README. The saved excerpt is shown below.
World of Warcraft character inspector combining Blizzard, Raider.IO and Warcraft Logs data. Live at puginspect.com.
• Node.js 24
• pnpm 11 (corepack enable picks up the pinned version)
• Docker, or a local PostgreSQL 17
• API credentials for Blizzard, Raider.IO and Warcraft Logs
The frontend runs on http://localhost:3000 and the backend on http://localhost:4000/graphql. The backend applies database migrations on startup.Read the full README ↗World of Warcraft character inspector combining Blizzard, Raider.IO and Warcraft Logs data. Live at puginspect.com.
corepack enable picks up the pinned version)Create apps/backend/.env:
RAIDERIO_API_KEY=
WARCRAFTLOGS_CLIENT_ID=
WARCRAFTLOGS_CLIENT_SECRET=
BLIZZARD_CLIENT_ID=
BLIZZARD_CLIENT_SECRET=
DATABASE_URL=postgresql://puginspect:localdev@localhost:5432/puginspect
ALLOWED_ORIGINS=http://localhost:3000
pnpm install
docker compose up -d postgres
pnpm dev
The frontend runs on http://localhost:3000 and the backend on http://localhost:4000/graphql. The backend applies database migrations on startup.
To run the whole stack in containers instead, use docker compose up --build (frontend on http://localhost:8080). Without --build, Compose pulls the published production images instead of building your working tree.
| Command | Description |
|---|---|
pnpm check-types | TypeScript checks |
pnpm test | Unit and integration tests |
pnpm test:e2e | Playwright smoke tests |
pnpm codegen | Regenerate GraphQL types |
pnpm --filter backend db:generate | Generate a Drizzle migration |
pnpm season:update | Regenerate season config from live APIs |
The desktop companion has its own README.