From 0865861deba7c379cc63f40ccbdfdb5ccc7f3cf9 Mon Sep 17 00:00:00 2001 From: zukwiz Date: Wed, 27 May 2026 19:08:49 +0200 Subject: [PATCH] static: public Reverse Watch dashboard MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Single self-contained static/index.html (no build step) plus the icons / favicons / chart-event data it consumes. Layout - three KPI cards (Traders indexed, Traders flagged, Traders flagged 24h) - volume chart with period picker (7d / 30d / 3m / 6m / 1y), powered by uPlot from the unpkg CDN - recent-reversals table with client-side paging - single-Steam-ID search with avatar + display name + Steam/CSFloat profile link result chip - CS2 event annotation chips on the chart, data driven by static/cs2-events.json — edit that file to add or update events - responsive mobile layout (single-column, condensed KPI row) Dependencies - Material Symbols (Google Fonts CDN) - uPlot 1.6.x (unpkg CDN) - No bundler, no NPM dependencies, no build step. This PR depends on #1 (in-memory static serving) and #2 (public stats / recent endpoints) being merged for the dashboard to function, but is reviewable in isolation against master. Co-authored-by: Cursor --- README.md | 2 +- static/cs2-events.json | 23 + static/csfloat-icon.png | Bin 0 -> 408 bytes static/csfloat-logo.png | Bin 0 -> 3900 bytes static/index.html | 2066 +++++++++++++++++++++++++++++++-------- static/steam-icon.png | Bin 0 -> 410 bytes 6 files changed, 1694 insertions(+), 397 deletions(-) create mode 100644 static/cs2-events.json create mode 100644 static/csfloat-icon.png create mode 100644 static/csfloat-logo.png create mode 100644 static/steam-icon.png diff --git a/README.md b/README.md index 1926b7f..eb3c8cc 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # [reverse.watch](https://reverse.watch) -Community-driven open trade reversal tracking database for Steam. Participating entities can report trade reverals to the open database. +Community-driven open trade reversal tracking database for Steam. Participating entities can report trade reversals to the open database, and anyone can browse activity at [reverse.watch](https://reverse.watch) — a public dashboard served from [`static/index.html`](static/index.html) at `/`. ## Interested in Participating? diff --git a/static/cs2-events.json b/static/cs2-events.json new file mode 100644 index 0000000..28e4933 --- /dev/null +++ b/static/cs2-events.json @@ -0,0 +1,23 @@ +{ + "_comment": "Annotation chips that float above the Reversal Graph at the date of the event. Edit this file directly — it is loaded by static/index.html at boot, no rebuild needed. Each entry needs `date` (YYYY-MM-DD, UTC) and `title` (short, shown on the chip). `description` and `url` are optional and surface in the hover popover. Chips only render for events that fall inside the currently-selected period (7d / 30d / 3m / 6m / 1y). When two chips would overlap, the later one auto-stacks onto a row below; if more than 3 rows are needed the oldest chips are dropped (check the browser console).", + "events": [ + { + "date": "2026-05-20", + "title": "Trade Revert Update", + "description": "Valve enabled merchant-led trade reversals for CS2, broadening the set of disputes that route through reverse.watch.", + "url": "" + }, + { + "date": "2026-03-08", + "title": "Anti-Cheat Wave", + "description": "Large VAC ban wave hit account-sharing rings; downstream effect on reversal volume as compromised accounts were flagged.", + "url": "" + }, + { + "date": "2025-10-22", + "title": "Retake Update", + "description": "New Retake game mode re-introduced + users can now use covert skins to trade up to a knife or gloves", + "url": "" + } + ] +} diff --git a/static/csfloat-icon.png b/static/csfloat-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..184058649510ba99aac57e923362bb8f14357a4a GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4foCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eBK3|DzL`iUdT1k0gQ7VI5W_oVoyp7Y6fx3h} zT^vIy7`IL}Y531zZK#{&t#f-uAh6L_FIdrnD3>giFwE3rZXC6dT&fT9vX1M z%y819trNc;xyNNw!g#Lyz?|AYWz1qHro4G_l6hKafJboh6vb_gSqE$x!|P0REA$o@ ze|Qw1pyD<=^6GW5o?DCBYlBv->Ax5j_fG0U!<2+SGwdfXo>uL3TU)_3*Eq4Ury^%^ z^xcUji%hm^Hs8@GhX1@kfID4WIiLG_4Q3-64Dn7;p@pu6{1-oD!M<0C1l7 literal 0 HcmV?d00001 diff --git a/static/csfloat-logo.png b/static/csfloat-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2bf80ca4e72c0c376f5a0da0152276e62beb6c GIT binary patch literal 3900 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 KMNUMnLSTY?t(EWq literal 0 HcmV?d00001 diff --git a/static/index.html b/static/index.html index 95bfedd..40d4505 100644 --- a/static/index.html +++ b/static/index.html @@ -3,23 +3,30 @@ + - - reverse.watch + + + reverse.watch — The open trade reversal database -
-
-
- reverse.watch +
+ +
+
+ Powered by + + +
-

Check if a Steam ID has a history of trade reversals

-
- -
-
-
- - +

The open trade
reversal database

+

+ Check if a Steam ID has a history of reversed trades, reported by + marketplaces, trading tools, and community platforms. +

+ +
+ +
+ + + +
+ + +
+
+
+
+
+ + + + + + + +
+ +
+
+
-

Enter a 64-bit Steam ID to check their reversal history

- + +

Enter a 64-bit Steam ID to check their reversal history.

+ + +
+ + +
+
+ +
Steam IDs Searched
+
+
+
+
Traders Flagged
+
+
+
+
Traders Flagged (24h)
+
+
-
-
-
-
+
+
+
+

Reversal Graph

+
+ + + + + +
+
+

+ Total reversals across the selected time period. +

+
+
+
+ +
+
+
+

Recent Reversals

+
+

+ The most recent reversals reported to the database. + Search by Steam ID above to look up a specific trader. +

+
+
+ + + + + + + + + + + +
TraderSteam IDDate Added
Loading reversals…
-
-
- Steam ID - +
+ +
+
+ + + +