{ "name": "portfolio", "private": true, "version": "1.0.0", "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint --strict", "build:images": "node scripts/optimize-images.js", "generate:images": "node scripts/generate-blog-images.mjs", "generate:images:dry": "node scripts/generate-blog-images.mjs --dry-run", "generate:sitemap": "node scripts/generate-sitemap.js", "generate:icons": "node scripts/generate-icons.mjs", "generate:github": "node scripts/generate-github-readme.js", "download:fonts": "node scripts/download-fonts.mjs", "convert:translations": "node scripts/convert-translations.js", "test": "vitest", "test:coverage": "vitest run --coverage" }, "dependencies": { "@mdx-js/loader": "^3.1.0", "@mdx-js/mdx": "^3.1.0", "@mdx-js/react": "^3.1.0", "@next-safe/middleware": "^0.10.0", "@next/mdx": "^16.1.0", "@supabase/ssr": "^0.8.0", "@supabase/supabase-js": "^2.39.7", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "framer-motion": "^11.18.2", "gray-matter": "^4.0.3", "lucide-react": "^0.475.0", "next": "^16.1.0", "next-intl": "^4.7.2", "openai": "^4.77.0", "pg": "^8.13.1", "react": "^19.2.0", "react-dom": "^19.2.0", "react-ga4": "^2.1.0", "react-intersection-observer": "^9.8.1", "tailwind-merge": "^3.0.1", "tailwindcss-animate": "^1.0.7", "web-vitals": "^5.1.0" }, "devDependencies": { "@playwright/test": "^1.58.0", "@tailwindcss/forms": "^0.5.11", "@tailwindcss/postcss": "^4.1.0", "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^16.1.0", "@types/mdx": "^2.0.13", "@types/node": "^22.0.0", "@types/pg": "^8.11.10", "@types/react": "^19.2.0", "@types/react-dom": "^19.2.0", "@vitest/coverage-v8": "1.6.1", "eslint": "^9.9.1", "eslint-config-next": "^16.1.0", "jsdom": "^23.2.0", "playwright-lighthouse": "^4.0.0", "postcss": "^8.4.35", "sharp": "^0.34.3", "tailwindcss": "^4.1.0", "typescript": "5.9.3", "vitest": "^1.3.1" }, "pnpm": { "onlyBuiltDependencies": [ "@parcel/watcher", "@swc/core", "esbuild", "sharp", "unrs-resolver" ], "ignoredBuiltDependencies": [] } }