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.7

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.3

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.7

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.45.1

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

Wrangler

4.112.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.0

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 + remark-gfm + remark-stringify

11.0.5 / 4.0.1 / 11.0.0

Builds an mdast tree and serializes it to Markdown for the per-report and llms.txt/llms-full.txt routes, so reporter-submitted text is escaped correctly.

Tooling & Quality

Biome

2.5.4

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.