Data
Prices and item metadata come from Steam. The reserve account is read live once it is connected.
What is live
| Data | Source |
|---|---|
| Prices, median sale, 24h volume | Steam Community Market, refreshed every 30 minutes, last-known values as a fallback. |
| Item type, rarity, description, series, contents | Scraped from each item's Steam market page into lib/catalog.json. |
| Item and skin art | Steam economy CDN, stored in public/. |
| The reserve inventory and its snapshot hash | The account's public Steam inventory, once RESERVE_STEAM_ID is set. Sample figures until then. |
| Sweeps, fees, war chest | Sample data until the Pons fee feed is connected. |
| Robinhood Chain transactions | Not written yet. The site shows the hash it would write. |
How Steam is read
Everything goes through lib/steam.ts on the server. Each read uses the Next.js fetch cache with a revalidate window, so Steam sees at most one request per item per window no matter how many people load the page. Price reads run one after another rather than in a burst, because Steam rate-limits by address, and every read falls back to the last value stored in the repo if Steam says no.
getPrice(name) // lowest, median, 24h volume, live flag getPrices(names) // the same, sequentially getInventory() // items grouped by name, total, SHA-256 of the holdings CATALOG // metadata for every container the site knows
Connecting the reserve account
- Create the Steam account that will hold the cases and set its inventory to public.
- Find its 64-bit id (it starts with 7656) and set
RESERVE_STEAM_IDin the deployment environment. - Redeploy. The vault, proof and rank pages switch from sample figures to the live inventory, and the snapshot hash on the proof page becomes the real one.
What the hash covers
The snapshot hash is SHA-256 over the item names, their counts, the total and the account id, in a fixed order. Prices and times are left out so the hash only changes when the holdings change.
The files
steam.ts // server reads: prices, inventory, catalog catalog.json // scraped metadata for 11 containers prices.json // last-known prices, the fallback contents.json // the CS20 Case contents and their grades market.json // listing counts captured on 17 Sep 2026 reserve.ts // sample reserve figures, ranks, formatters