{ "name": "jarv.is", "private": true, "license": "(MIT AND CC-BY-4.0)", "homepage": "https://jarv.is/", "repository": "jakejarvis/jarv.is", "author": { "name": "Jake Jarvis", "email": "jake@jarv.is", "url": "https://github.com/jakejarvis" }, "scripts": { "dev": "next dev -H 0.0.0.0", "build": "next build", "start": "next start", "lint": "eslint .", "typecheck": "tsc --noEmit", "prepare": "test -d node_modules/husky && husky || echo \"skipping husky\"" }, "dependencies": { "@date-fns/tz": "^1.2.0", "@date-fns/utc": "^2.1.0", "@giscus/react": "^3.1.0", "@mdx-js/loader": "^3.1.0", "@mdx-js/react": "^3.1.0", "@next/bundle-analyzer": "15.4.0-canary.5", "@next/mdx": "15.4.0-canary.5", "@octokit/graphql": "^8.2.2", "@octokit/graphql-schema": "^15.26.0", "@t3-oss/env-nextjs": "^0.12.0", "@upstash/redis": "^1.34.8", "@vercel/analytics": "^1.5.0", "cheerio": "^1.0.0", "clsx": "^2.1.1", "copy-to-clipboard": "^3.3.3", "date-fns": "^4.1.0", "fast-glob": "^3.3.3", "feed": "^4.2.2", "geist": "^1.3.1", "html-entities": "^2.6.0", "lucide-react": "0.503.0", "next": "15.4.0-canary.5", "prop-types": "^15.8.1", "react": "19.1.0", "react-activity-calendar": "^2.7.10", "react-countup": "^6.5.3", "react-dom": "19.1.0", "react-innertext": "^1.1.5", "react-is": "19.1.0", "react-lite-youtube-embed": "^2.5.1", "react-schemaorg": "^2.0.0", "react-textarea-autosize": "^8.5.9", "react-timeago": "^8.2.0", "react-tooltip": "^5.28.1", "react-turnstile": "^1.1.4", "react-tweet": "^3.2.2", "rehype-mdx-import-media": "^1.2.0", "rehype-pretty-code": "^0.14.1", "rehype-slug": "^6.0.0", "rehype-unwrap-images": "^1.0.0", "remark-frontmatter": "^5.0.0", "remark-gfm": "^4.0.1", "remark-html": "^16.0.1", "remark-mdx-frontmatter": "^5.1.0", "remark-parse": "^11.0.0", "remark-smartypants": "^3.0.2", "resend": "^4.4.0", "server-only": "0.0.1", "shiki": "^3.3.0", "tailwind-merge": "^3.2.0", "tailwindcss": "^4.1.4", "unified": "^11.0.5", "valibot": "^1.0.0" }, "devDependencies": { "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.25.1", "@jakejarvis/eslint-config": "^4.0.7", "@tailwindcss/postcss": "^4.1.4", "@types/mdx": "^2.0.13", "@types/node": "^22.14.1", "@types/prop-types": "^15.7.14", "@types/react": "^19.1.2", "@types/react-dom": "^19.1.2", "@types/react-is": "^19.0.0", "babel-plugin-react-compiler": "19.0.0-beta-af1b7da-20250417", "cross-env": "^7.0.3", "eslint": "^9.25.1", "eslint-config-next": "15.4.0-canary.5", "eslint-config-prettier": "^10.1.2", "eslint-plugin-css-modules": "^2.12.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-mdx": "^3.4.1", "eslint-plugin-prettier": "^5.2.6", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-compiler": "19.0.0-beta-af1b7da-20250417", "eslint-plugin-react-hooks": "^5.2.0", "husky": "^9.1.7", "lint-staged": "^15.5.1", "postcss": "^8.5.3", "prettier": "^3.5.3", "prettier-plugin-tailwindcss": "^0.6.11", "schema-dts": "^1.1.5", "typescript": "5.8.3" }, "optionalDependencies": { "sharp": "^0.34.1" }, "engines": { "node": ">=20.x" }, "packageManager": "pnpm@10.9.0+sha512.0486e394640d3c1fb3c9d43d49cf92879ff74f8516959c235308f5a8f62e2e19528a65cdc2a3058f587cde71eba3d5b56327c8c33a97e4c4051ca48a10ca2d5f", "cacheDirectories": [ "node_modules", ".next/cache" ], "lint-staged": { "*.{js,jsx,ts,tsx,md,mdx}": [ "eslint" ] } }