{
  "name": "codewhale-web",
  "version": "0.1.0",
  "private": true,
  "type": "module",
  "description": "Community site for Codewhale — codewhale.net",
  "scripts": {
    "dev": "node scripts/opennext-config.mjs && node scripts/derive-facts.mjs && node scripts/derive-changelog.mjs && node scripts/derive-install.mjs && next dev",
    "prebuild": "node scripts/derive-facts.mjs && node scripts/derive-changelog.mjs && node scripts/derive-install.mjs",
    "build": "next build",
    "start": "next start",
    "test": "node --test scripts/dependency-security.test.mjs && vitest run",
    "check": "npm run check:facts && npm run check:latest-release && npm run prebuild && npm run check:docs && npm run check:tokens && npm run lint && tsc --noEmit && npm run build",
    "check:facts": "node scripts/check-facts.mjs && node scripts/check-cloud-facts.mjs",
    "sync:latest-release": "node scripts/sync-latest-release.mjs",
    "check:latest-release": "node scripts/sync-latest-release.mjs --check",
    "check:docs": "node scripts/derive-install.mjs && node scripts/check-docs.mjs && node scripts/render-terminal-capture.mjs --check",
    "check:tokens": "python3 ../scripts/export-design-tokens.py --check",
    "check:locales": "node scripts/check-locales.mjs && node scripts/gt-site.mjs check",
    "i18n:gt": "node scripts/gt-site.mjs",
    "check:deploy-env": "node scripts/check-cloudflare-deploy-env.mjs",
    "compare:deployed-facts": "node scripts/compare-deployed-facts.mjs",
    "check:deployed-facts": "node scripts/compare-deployed-facts.mjs --require-current",
    "lint": "eslint .",
    "build:opennext": "node scripts/opennext-config.mjs && opennextjs-cloudflare build --config .cloudflare/opennext.json",
    "build:cloudflare": "npm run build:opennext && node node_modules/wrangler/bin/cf-wrangler.js build",
    "preview": "npm run build:cloudflare && opennextjs-cloudflare populateCache local --config .cloudflare/opennext.json && node node_modules/wrangler/bin/cf-wrangler.js dev",
    "predeploy": "node scripts/check-kv-id.mjs",
    "deploy": "npm run build:cloudflare && opennextjs-cloudflare populateCache remote --config .cloudflare/opennext.json && cf deploy --prebuilt",
    "cf-typegen": "cf workers types",
    "postinstall": "node scripts/patch-braces.mjs && node scripts/patch-minimatch.mjs && node scripts/patch-glob.mjs && node scripts/patch-bundled-globs.mjs",
    "audit:dependencies": "node scripts/audit-dependencies.mjs"
  },
  "dependencies": {
    "next": "^16.4.1",
    "react": "^19.3.1",
    "react-dom": "^19.3.1",
    "stripe": "23.1.0"
  },
  "devDependencies": {
    "@cloudflare/config": "0.23.0",
    "@opennextjs/cloudflare": "^1.20.9",
    "@types/node": "^26.6.6",
    "@types/react": "^19.3.0",
    "@types/react-dom": "^19.3.0",
    "autoprefixer": "^10.6.1",
    "cf": "1.0.0-beta.12",
    "eslint": "^9.39.4",
    "eslint-config-next": "^15.5.18",
    "github-slugger": "^2.0.0",
    "gt": "2.22.4",
    "marked": "^18.0.14",
    "postcss": "^8.5.18",
    "tailwindcss": "^3.4.17",
    "typescript": "^5.7.3",
    "vitest": "^5.0.5",
    "wrangler": "4.147.0"
  },
  "overrides": {
    "esbuild": "0.28.1",
    "nanoid": "^3.3.17",
    "postcss": "^8.5.18",
    "sharp": "0.35.5",
    "ws": "8.21.0",
    "undici": "7.30.1",
    "postcss-selector-parser": "7.1.6",
    "zod": "4.6.7"
  }
}