Open-source data-first ecosystem for Valve's Deadlock.
This repository is not affiliated with Valve Corporation. Deadlock, Valve, Steam, and related trademarks or assets belong to their respective owners.
apps/website- Astro website and static JSON API.packages/schema- shared TypeScript and Zod contracts.packages/game-data- generated normalized game data and web-ready asset references.tools/extractor- local client data extraction and normalization tooling.docs- architecture, update flow, and contribution notes.
Generated data currently includes heroes (with nested abilities, primary-weapon stats — bullet damage, fire rate, DPS, ammo, reload, falloff — role tags, gun archetype, progression and base stats), released and in-development heroes, items with public shop category/tier/cost metadata, Spirit/level scaling coefficients on ability and item properties, NPCs / map objectives (Guardians, Walkers, Patron, Troopers, Denizen camps, Sinner's Sacrifice, sentries — with health and soul bounty), player-flow mechanics with aliases and common questions, full Steam news feed entries, official update history, player leaderboard snapshots, locale metadata, and asset references exported from the local client. Every game string is localized across all 17 client languages. Heroes Valve flags as new-player-friendly are surfaced as such. A separate external pass (npm run update:mods) pulls community mods/skins from GameBanana, normalized and tied to heroes.
A patch-versioned, fully-localized static JSON API is served from the website under /api/v1 (see /api/v1 for the discovery index). Endpoints include heroes, heroes/{slug}, items, items/{slug}, abilities/{id}, npcs, mods, mechanics, updates, news, leaderboards, locales, assets, sources, graph and manifest. It is generated entirely from the local client — no runtime backend — so it can be hosted as static files. Live/player data (match history, win rates) is sourced separately via the community Deadlock API.
docs/game-model.md- player-facing domain model for heroes, items, mechanics, updates, news, leaderboard, skins, and localization.docs/ecosystem.md- source adapters, normalized data flow, website/API contracts, and contribution model.docs/architecture.md- current monorepo architecture.docs/update-flow.md- how to refresh generated data from the client and external sources.docs/contributing.md- contributor conventions and legal note.
npm install
npm run update:game-data # local client → heroes, items, abilities, npcs, …
npm run update:mods # external → community mods/skins from GameBanana
npm run update:all # both + validate (the one-command "make update")
npm run validate:data
npm run build
npm run dev --workspace @deadlock/websiteThe data tool is multi-source: update reads the local client (offline, source of truth), mods pulls community mods/skins from GameBanana (hero-tied), and the design anticipates further adapters (external trackers, match ingestion).
The extractor reads the installed Windows client by default from C:\Program Files (x86)\Steam\steamapps\common\Deadlock. Set DEADLOCK_GAME_DIR to override the path. Set DEADLOCK_SKIP_ASSETS=1 to re-extract data without re-exporting the (large, rarely-changing) texture set.
Source2Viewer/ValveResourceFormat CLI is required for VPK and compiled resource extraction. Set SOURCE2VIEWER_CLI if the CLI is not available at .deadlock-cache\vrf\cli-windows-x64\Source2Viewer-CLI.exe.