{ "name": "yap-blog", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "eslint", "typecheck": "next typegen && tsc --noEmit -p tsconfig.typecheck.json", "db:generate": "drizzle-kit generate", "db:migrate": "drizzle-kit migrate", "db:seed": "tsx scripts/seed.ts", "db:studio": "drizzle-kit studio", "test": "vitest run", "test:watch": "vitest", "test:e2e": "next build && tsx tests/e2e/setup-db.ts && playwright test", "test:all": "npm run test && npm run test:e2e" }, "dependencies": { "@tiptap/extension-image": "^3.27.1", "@tiptap/extension-placeholder": "^3.27.1", "@tiptap/extension-table": "^3.27.1", "@tiptap/pm": "^3.27.1", "@tiptap/react": "^3.27.1", "@tiptap/starter-kit": "^3.27.1", "dotenv": "^17.4.2", "drizzle-orm": "^0.45.2", "hast-util-to-text": "^4.0.2", "next": "16.2.10", "pg": "^8.22.0", "react": "19.2.4", "react-dom": "19.2.4", "rehype-parse": "^9.0.1", "rehype-raw": "^7.0.0", "rehype-sanitize": "^6.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "unified": "^11.0.5", "unist-util-visit": "^5.1.0", "zod": "^4.4.3" }, "devDependencies": { "@playwright/test": "^1.61.1", "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/pg": "^8.20.0", "@types/react": "^19", "@types/react-dom": "^19", "drizzle-kit": "^0.31.10", "eslint": "^9", "eslint-config-next": "16.2.10", "tailwindcss": "^4", "tsx": "^4.22.4", "typescript": "^5", "vitest": "^4.1.9" } }