{ "name": "ruixin-website-react", "version": "1.0.0-phase1", "private": true, "scripts": { "dev": "next dev -p 3000", "build": "next build", "start": "next start -p 3000", "lint": "eslint", "type-check": "tsc --noEmit", "test": "playwright test", "test:unit": "jest", "test:e2e": "cd e2e && npm test", "test:smoke": "playwright test --grep @smoke", "test:report": "allure generate test-results/allure-results && allure open", "test:performance": "k6 run tests/performance/load-test.js", "test:stress": "k6 run tests/performance/stress-test.js", "test:security": "k6 run tests/security/sql-injection-test.js && k6 run tests/security/xss-test.js", "test:sql-injection": "k6 run tests/security/sql-injection-test.js", "test:xss": "k6 run tests/security/xss-test.js", "check:contrast": "tsx scripts/check-color-contrast.ts", "check:headings": "tsx scripts/check-heading-hierarchy.ts", "audit:performance": "node scripts/performance-audit.js", "audit:seo": "node scripts/seo-check.js", "audit:accessibility": "node scripts/accessibility-test.js", "audit:forms": "node scripts/form-validation.js", "audit:all": "./scripts/run-all-tests.sh", "report:generate": "node scripts/generate-test-report.js", "db:generate": "drizzle-kit generate", "db:migrate": "drizzle-kit migrate", "db:push": "drizzle-kit push", "db:studio": "drizzle-kit studio", "db:seed": "tsx src/db/seed.ts" }, "dependencies": { "@antv/g2": "^5.4.8", "@auth/drizzle-adapter": "^1.11.1", "@libsql/client": "^0.17.0", "@playwright/test": "^1.58.2", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", "@sentry/nextjs": "^10.42.0", "@tiptap/extension-image": "^3.20.1", "@tiptap/extension-link": "^3.20.1", "@tiptap/pm": "^3.20.1", "@tiptap/react": "^3.20.1", "@tiptap/starter-kit": "^3.20.1", "@types/three": "^0.183.1", "@vercel/analytics": "^1.6.1", "bcryptjs": "^3.0.3", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "critters": "^0.0.23", "date-fns": "^4.1.0", "dompurify": "^3.3.1", "drizzle-orm": "^0.45.1", "framer-motion": "^12.34.3", "lucide-react": "^0.563.0", "nanoid": "^5.1.6", "next": "16.1.6", "next-auth": "^5.0.0-beta.30", "react": "19.2.3", "react-dom": "19.2.3", "resend": "^6.9.2", "tailwind-merge": "^3.4.0", "three": "^0.183.1", "zod": "^4.3.6" }, "devDependencies": { "@axe-core/playwright": "^4.11.1", "@eslint/eslintrc": "^3.3.5", "@tailwindcss/postcss": "^4", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", "@types/bcryptjs": "^2.4.6", "@types/dompurify": "^3.0.5", "@types/jest": "^30.0.0", "@types/nanoid": "^2.1.0", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", "@typescript-eslint/eslint-plugin": "^8.57.0", "@typescript-eslint/parser": "^8.57.0", "chrome-launcher": "^1.2.1", "drizzle-kit": "^0.31.9", "eslint": "^8.57.1", "eslint-config-next": "^0.2.4", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", "jest": "^30.2.0", "jest-environment-jsdom": "^30.2.0", "k6": "^0.0.0", "lighthouse": "^13.0.3", "tailwindcss": "^4", "ts-jest": "^29.4.6", "tsx": "^4.21.0", "typescript": "^5" } }