Open Source · Tech Stack

What this case file is built with.

Every framework, library, and tool this site runs on, grouped by what it's for. Versions track package.json as of the last update.

Framework & Runtime

TanStack Start

1.168.32

React SSR meta-framework: file-based routing, server functions, server routes.

React

19.2.8

UI library. React Compiler is enabled -- most manual useMemo/useCallback were removed.

React Compiler

1.0.0

Automatic memoization, wired in via @rolldown/plugin-babel since Vite 8’s React plugin is Rolldown-based, not Babel-based.

Vite

8.1.5

Build tool and dev server, Rolldown-powered bundler under the hood.

TypeScript

7.0.2

Static typing across the whole app -- strict mode, no `any`.

Bun

1.3.14

Package manager and local dev runtime (the deployed app runs on Cloudflare Workers’ own runtime, not Bun).

TanStack Libraries

TanStack Router

1.170.18

File-based routing, type-safe navigation and search params.

TanStack Query

5.101.4

Data fetching and caching, warmed server-side on every route loader.

TanStack DB

0.1.94

Reactive live queries (useLiveQuery) over a collection synced from the Query cache -- powers instant search filtering.

TanStack Table

8.21.3

Column definitions and pagination for the reports table.

TanStack Virtual

3.14.8

Row virtualization -- only visible table rows are mounted in the DOM.

TanStack Form

1.33.2

The "Report a Scammer" submission form, with per-field Zod validators.

TanStack Store

0.11.0

Shared search/pagination filter state across the table and URL.

TanStack Pacer

0.22.1

Debounces the search input before it hits the live query.

Cloudflare & Storage

Cloudflare Workers

The deploy target -- every route (pages, server functions, and server routes like sitemap.xml/og.png) runs as one Worker.

Cloudflare D1

SQLite database holding every scammer report -- the only external dependency this app has.

@cloudflare/vite-plugin

1.47.0

Runs a real Workers runtime (via Miniflare) inside Vite's dev server and build pipeline.

Wrangler

4.114.0

Cloudflare CLI -- local D1 migrations, deploy, type generation.

Styling & Design

Tailwind CSS

4.3.3

Utility-first CSS -- almost all styling is Tailwind composition, not custom classes.

clsx + tailwind-merge

2.1.1 / 3.6.0

Back the cn() helper (src/lib/cn.ts) for conditional/overriding class names.

Google Fonts

Special Elite (display/typewriter), Source Serif 4 (body), IBM Plex Mono (data/labels) -- also self-hosted as TTFs for the OG image renderer.

@tailwindcss/typography

0.5.20

The `prose` plugin, styling the rendered Markdown case files served to agents.

Forms, Validation & Data

Zod

4.4.3

Schema validation on the report submission form, client and server.

libphonenumber-js

1.13.9

Validates phone numbers and derives each report’s ISO country code from its calling code.

Faker.js

10.5.0

Generates the local seed dataset (scripts/seed.ts) -- a dev-only dependency.

OG Image Generation

takumi-js

2.4.2

Rust engine (native on Bun, WebAssembly on Workers) that renders every page’s og:image from JSX, on request, per page.

MCP & Markdown

@modelcontextprotocol/sdk

1.29.0

Powers the remote MCP server at /mcp -- the same buildTools() list backs both this and the in-browser MCP tools.

unified (rehype-parse + rehype-remark + remark-gfm + remark-stringify)

11.0.5 / 9.0.1 / 10.0.1 / 4.0.1 / 11.0.0

Converts every page's rendered HTML into its Markdown twin (the URL plus ".md") in the Worker entry, so the twin always says exactly what the page says and reporter-submitted text is escaped correctly.

Tooling & Quality

Biome

2.5.5

Lint + format in one tool -- no ESLint, no Prettier.

Vitest + Testing Library

4.1.10

Unit/component tests, run against a dedicated Vitest-only Vite config.

Frequently asked questions

Why TanStack Start instead of Next.js?

TanStack Start gives full-stack React (SSR, server functions, and server routes) built directly on TanStack Router, which this project already used for its type-safe routing -- one router, not two competing ones.

Why Cloudflare Workers and D1 instead of a traditional server and database?

The entire site -- pages, server functions, and server routes like sitemap.xml and og.png -- runs as one Worker at the edge, with D1 (SQLite) as the only external dependency. No servers to provision or scale.

Is this project open source?

Yes -- the full source, including this stack list, is at github.com/sky-flux/scammercasefile.

How are the page preview images (og:image) generated?

By takumi-js, a Rust rendering engine that runs natively on Bun and as WebAssembly on Cloudflare Workers, producing each page's image from JSX on request.

Been targeted by a scammer?

File a report with the number, name, and what happened — it's published immediately and warns the next person who searches.

Report a scammer