Technical reference site for engineers and DeFi developers: the top stablecoins by market cap, with networks, contracts, features, and risk notes. Market cap (and total tracked cap) is refreshed at build time from DefiLlama. Per-coin chain lists and counts come from manually curated deployments in data/coins.ts (official / documented networks only — not every DefiLlama-indexed bridge variant). Live at stablemoney.dev.
- Next.js 14 (App Router)
- TypeScript, Tailwind CSS, shadcn/ui
- next-mdx-remote (RSC) for supplementary MDX on coin pages
- Fuse.js for client-side fuzzy search
- next-themes (dark default + light toggle)
npm install
npm run devOpen http://localhost:3000.
| Command | Description |
|---|---|
npm run dev |
Development server |
npm run build |
Production build (runs prebuild automatically) |
npm run prebuild |
Fetch live market data from DefiLlama |
npm run start |
Run production server |
npm run lint |
ESLint |
npm run format |
Prettier write |
npm run format:check |
Prettier check |
npm run test |
Run test suite (Vitest) |
npm run test:watch |
Vitest in watch mode |
npm run check-proxy |
Validate proxy metadata in coins.ts against on-chain data |
scripts/check-proxy-status.ts reads EIP-1967 and EIP-1822 storage slots for every EVM deployment in coins.ts and compares the detected proxy type against the static proxyType field.
# Check all coins
npm run check-proxy
# Filter to one coin
npx tsx scripts/check-proxy-status.ts --coin USDC
# Filter to one coin + chain
npx tsx scripts/check-proxy-status.ts --coin GHO --chain arbitrumIt prints a per-deployment result (✓ match / ✗ mismatch) and exits with code 1 if any mismatches are found. Run this after editing proxy metadata in coins.ts to confirm the static data matches the live contract.
app/— Routes: home,/coins/[symbol],/coins/[symbol]/eips,/onchain-wallet-check,/standards,sitemap.ts,robots.tscomponents/— UI: cards, filters, search, tablesdata/coins.ts— Typed coin dataset (networks, proxy metadata, features, risks)data/coinEips.ts— EIP/ERC standard definitions and per-coin implementation profilesscripts/— One-off maintenance scripts (fetch-market-data.ts,check-proxy-status.ts)site/— Site config, coin search (Fuse), feature merge helpers, MDX loader, andsite/content/coins/*.mdxfor optional coin page sectionslib/— Market data, crypto RPC helpers, EIP utilities, proxy label constants, etc.
Copy .env.example to .env.local. Defaults use https://stablemoney.dev when unset. For local Open Graph / sitemap URLs, set:
NEXT_PUBLIC_SITE_URL=http://localhost:3000V1 does not require API keys.
Build with npm run build and run with npm run start on any Node host, or use your platform’s Next.js integration. NEXT_PUBLIC_SITE_URL defaults to https://stablemoney.dev; override for staging or local builds if needed.
netlify.tomlis included with:- build command:
npm run build(runsprebuildfirst via npm lifecycle, fetching DefiLlama data) - default production URL:
NEXT_PUBLIC_SITE_URL=https://stablemoney.dev
- build command:
- In Netlify site settings, set the same env var for Production:
NEXT_PUBLIC_SITE_URL=https://stablemoney.dev
- Connect your repository, deploy, then attach
stablemoney.devin Domain management.
Market cap and chain counts are fetched at build time. To keep them fresh:
- In Netlify go to Site settings > Build & deploy > Build hooks and create a hook.
- Use an external cron service (e.g. cron-job.org) to POST to the hook URL once daily.
Each triggered rebuild runs prebuild, pulling the latest data from DefiLlama before the Next.js build starts. If the API is unreachable, the build still succeeds using the last cached data/generated/market-data.json or static fallbacks from data/coins.ts.
MIT. Copyright (c) 2026 BlockRocket.