Ironfist Insights
no data — import yours

Colophon

Everything Ironfist Insights is built from, what each piece does, and where it comes from. The site is fully client-side: your match data never leaves your browser.

Technology / resourceWhat it does hereLicense
Wavu WankThe Tekken 8 replay database all match data comes from.Community fan project by the wavu.wiki maintainers
React (react + react-dom)Renders every page and panel.MIT
TypeScriptThe language the whole codebase is written in.Apache-2.0
ViteBuild tool. Produces the static bundle and the console export script.MIT
React RouterClient-side routing. Every page has a real URL you can bookmark or paste, with no server behind it.MIT
Dexie (+ dexie-react-hooks)IndexedDB wrapper. Holds your matches, notes, tags, controller binds, quiz progress and profiles, all in this browser; clearing site data deletes the lot.Apache-2.0
uPlotCanvas charting behind the rating and win-rate lines.MIT
JetBrains MonoThe typeface for data, in every theme. Self-hosted through @fontsource-variable, so no request goes to a font CDN. Monospaced so frame numbers line up in a column.SIL OFL 1.1
Open Sans, Outfit, Orbitron, Space Grotesk, Archivo + Archivo BlackHeadings and prose for the aesthetic themes, one face each. Self-hosted like the mono.SIL OFL 1.1
Vitest + Testing LibraryThe test harness.MIT
axe-core (via vitest-axe)Accessibility checks. Every page render in the suite goes through axe, and each theme’s contrast ratios are asserted instead of eyeballed.MPL-2.0 (axe-core); MIT (vitest-axe)
jsdom + fake-indexeddbBrowser stand-ins for the tests: a fake DOM and a fake IndexedDB.MIT (jsdom); Apache-2.0 (fake-indexeddb)
PlaywrightEnd-to-end suites on desktop and mobile viewports, plus the headless Chromium that prerenders each public page to static HTML after the build.Apache-2.0
oxlint + PrettierLinting and formatting. Neither ships in the bundle.MIT
markedRenders the Docs pages: each guide is a plain .md file compiled to HTML in your browser.MIT
obsidian-fight-note (glyph shapes)The directional arrows and four-button clusters in glyph notation mode, vendored from Dmitry Loac’s Obsidian fight-note plugin and recoloured with this site’s theme tokens.MIT
tekkendocs.comThe frame-data source behind the matchup quiz: startup, block and hit frames, hit levels, and most of the block-punishment ladders.Community fan project by the TekkenDocs maintainers
wavu.wikiThe community Tekken 8 wiki, and the primary source for the frame data pages, read through its Cargo API. It also supplies the punishment ladders for the characters no other source publishes one for. Its patch index is the only place either corpus can learn which game version it describes, currently 3.01.01.CC0 1.0 (public domain)
Frame data corpusThe dataset behind the frame data pages, normalised from wavu’s Cargo API into one committed JSON file per character, plus the measured axes behind each character profile. A script regenerates it, so it can always be re-derived from source. The profiles are counts and roster percentiles, not anyone’s opinion.CC0 1.0 (public domain), from wavu.wiki
Character & rank ID tablesMappings from Tekken 8’s internal ids to character and rank names. Wavu gives you a number; these turn it into "Feng" or "Tekken Emperor".Derived from public data
Health-page research citationsThe findings on the Playing health page are published research, each linked to its own source on the page. Findings and interpretation are labelled separately. None of it is medical advice.Each source under its own terms — see the link on each fact
Cloudflare PagesHosts the static site and the Pages Functions.Commercial service
wavu-export.jsThis site’s own console script. Paste it into DevTools on your wavu player page and it reads the match table already on screen, then saves it as a .ironfistinsights file. It makes no network requests, and it ships unminified so you can read every line before running it.Same as this site
Cloudflare D1 (the footer’s visit counter)The visit counter in the footer, on this site’s own origin. A Pages Function records one visit per browser session and reads the total back. No third party is contacted, and no analytics script ships in the bundle.Proprietary (Cloudflare) — the schema and the Function are ours, under this site’s licence
GitHub REST API (via a Cloudflare Pages Function)Behind the feedback form. A Pages Function takes your subject and description and files them, holding a token the browser never sees. It receives the text you typed and the page path you typed it on. Nothing else, and never your match data.N/A — a third-party API this site calls
Gamepad APIHow the browser sees your controller. One poller at 4 ms feeds the trainer, the controller test, the button mapper and the radial menu, so every surface reads the same snapshot. The measured interval is printed on the page.Web standard (W3C)
SDL_GameControllerDBA community database of controller layouts, from the SDL project. A curated slice of it ships here: fight sticks, leverless boards, arcade encoders, and the pads a browser hands over with their buttons in raw hardware order. It is what lets the site offer a layout for a controller it has never seen instead of asking you to map sixteen actions by hand.zlib, by Sam Lantinga and contributors
Web Audio APISynthesises every sound the site makes: the trainer’s demo tones playing a drill’s target rhythm, and the quiz feedback that climbs a scale as a streak runs. No audio files ship.Web standard (W3C)
Share-link codec (/share)An arithmetic coder for share links. It packs the date, result and both characters of each match into a base64url payload carried in the URL fragment, which is never sent to a server. Display names travel only if the sender types one, and Polaris IDs never travel at all. Opening a link renders a read-only view and writes nothing to your own data.Same as this site
Site artwork (favicon, share card)The favicon is four lines of hand-written SVG. The link-preview card is a 1200×630 PNG in the same two theme colours with JetBrains Mono rasterised into it, which SIL OFL permits. No stock art and no icon pack anywhere on the site. Nav and page icons are inline SVG paths drawn with currentColor, so the theme controls them.Same as this site; embedded type under SIL OFL 1.1
.ironfistinsights formatThe file format for exports and backups. Plain JSON underneath, with a SHA-256 checksum over the match data taken through the browser’s own Web Crypto API. On import a mismatched checksum is blocked by default, with an explicit override, so a truncated download does not quietly land in your data. Backups written before this extension was renamed end in .hifi instead — those still import exactly the same way.N/A — a file format, not a dependency