{ "name": "frontend", "version": "0.1.1", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "eslint", "lint:fix": "eslint --fix", "format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,css,md,json}\"", "format:check": "prettier --check \"src/**/*.{ts,tsx,js,jsx,css,md,json}\"", "depcheck": "depcheck --ignores=\"@types/react,@types/react-dom,@types/node,@types/react-syntax-highlighter,eslint-config-next,tailwindcss,@tailwindcss/postcss,depcheck,prettier,@ai-sdk/openai,@ai-sdk/openai-compatible,@ai-sdk/react,ai,rehype-highlight,zod\" --ignore-patterns=\"*.d.ts,.next/**,playwright-report/**\" --specials=next,webpack,babel --skip-missing", "analyze": "ANALYZE=true next build", "test": "vitest run", "test:integration": "playwright test", "prepare": "cd ../.. && husky frontend/.husky", "check": "knip && jscpd src && depcheck", "check:fix": "knip --fix" }, "dependencies": { "@ai-sdk/openai": "^3.0.12", "@ai-sdk/openai-compatible": "^2.0.13", "@ai-sdk/react": "^3.0.43", "@types/react-syntax-highlighter": "^15.5.13", "ai": "^6.0.41", "framer-motion": "^12.24.10", "lucide-react": "^0.561.0", "markdown-it": "^14.1.0", "mermaid": "^11.12.2", "next": "16.0.10", "react": "19.2.1", "react-dom": "19.2.1", "react-markdown": "^10.1.0", "react-syntax-highlighter": "^16.1.0", "rehype-highlight": "^7.0.2", "remark-gfm": "^4.0.1", "zod": "^4.2.1", "zustand": "^4.5.4" }, "devDependencies": { "@next/bundle-analyzer": "^16.1.3", "@playwright/test": "^1.57.0", "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", "depcheck": "^1.4.7", "eslint": "^9", "eslint-config-next": "16.0.10", "eslint-plugin-boundaries": "^5.3.1", "husky": "9.1.7", "jscpd": "^4.0.5", "jsdom": "^26.1.0", "knip": "^5.44.2", "lint-staged": "15.2.11", "prettier": "^3.8.0", "tailwindcss": "^4", "typescript": "^5", "vitest": "^3.2.4" }}
{
"name": "frontend",
"version": "0.1.1",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "eslint",
"lint:fix": "eslint --fix",
"format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,css,md,json}\"",
"format:check": "prettier --check \"src/**/*.{ts,tsx,js,jsx,css,md,json}\"",
"depcheck": "depcheck --ignores=\"@types/react,@types/react-dom,@types/node,@types/react-syntax-highlighter,eslint-config-next,tailwindcss,@tailwindcss/postcss,depcheck,prettier,@ai-sdk/openai,@ai-sdk/openai-compatible,@ai-sdk/react,ai,rehype-highlight,zod\" --ignore-patterns=\"*.d.ts,.next/**,playwright-report/**\" --specials=next,webpack,babel --skip-missing",
"analyze": "ANALYZE=true next build",
"test": "vitest run",
"test:integration": "playwright test",
"prepare": "cd ../.. && husky frontend/.husky",
"check": "knip && jscpd src && depcheck",
"check:fix": "knip --fix"
},
"dependencies": {
"@ai-sdk/openai": "^3.0.12",
"@ai-sdk/openai-compatible": "^2.0.13",
"@ai-sdk/react": "^3.0.43",
"@types/react-syntax-highlighter": "^15.5.13",
"ai": "^6.0.41",
"framer-motion": "^12.24.10",
"lucide-react": "^0.561.0",
"markdown-it": "^14.1.0",
"mermaid": "^11.12.2",
"next": "16.0.10",
"react": "19.2.1",
"react-dom": "19.2.1",
"react-markdown": "^10.1.0",
"react-syntax-highlighter": "^16.1.0",
"rehype-highlight": "^7.0.2",
"remark-gfm": "^4.0.1",
"zod": "^4.2.1",
"zustand": "^4.5.4"
},
"devDependencies": {
"@next/bundle-analyzer": "^16.1.3",
"@playwright/test": "^1.57.0",
"@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"depcheck": "^1.4.7",
"eslint": "^9",
"eslint-config-next": "16.0.10",
"eslint-plugin-boundaries": "^5.3.1",
"husky": "9.1.7",
"jscpd": "^4.0.5",
"jsdom": "^26.1.0",
"knip": "^5.44.2",
"lint-staged": "15.2.11",
"prettier": "^3.8.0",
"tailwindcss": "^4",
"typescript": "^5",
"vitest": "^3.2.4"
}
}