Tạo mới trang /listings dạng bảng ticker-style theo spec TEC-3034. - DataTable compact (row 36px, sticky header, alternating rows) - Cột: #, Mã (GG-xxx), Quận, Loại, Giá, Δ30d, DT m², KL/Views - Sortable theo Giá, Δ30d, DT m², KL/Views - Filter inline: Loại giao dịch, Loại BĐS, Quận, Khoảng giá - Toggle view: Table (default) ↔ Card grid (legacy component cũ) - Pagination restyle compact, giữ nguyên API params - Click row → navigate to detail page - Dùng DataTable + PriceDelta từ @/components/design-system Co-Authored-By: Paperclip <noreply@paperclip.ing>
82 lines
2.3 KiB
JSON
82 lines
2.3 KiB
JSON
{
|
|
"name": "goodgo-platform",
|
|
"private": true,
|
|
"packageManager": "pnpm@10.27.0",
|
|
"engines": {
|
|
"node": ">=22.0.0"
|
|
},
|
|
"pnpm": {
|
|
"onlyBuiltDependencies": [
|
|
"@nestjs/core",
|
|
"@prisma/client",
|
|
"@prisma/engines",
|
|
"esbuild",
|
|
"prisma",
|
|
"puppeteer"
|
|
],
|
|
"overrides": {
|
|
"axios": ">=1.15.0",
|
|
"lodash": ">=4.18.0",
|
|
"@hono/node-server": ">=1.19.13",
|
|
"@tootallnate/once": ">=3.0.1"
|
|
}
|
|
},
|
|
"scripts": {
|
|
"dev": "turbo run dev",
|
|
"build": "turbo run build",
|
|
"lint": "eslint .",
|
|
"test": "turbo run test",
|
|
"typecheck": "turbo run typecheck",
|
|
"format": "prettier --write .",
|
|
"format:check": "prettier --check .",
|
|
"dep-cruise": "depcruise apps/ libs/ --config .dependency-cruiser.cjs",
|
|
"db:generate": "prisma generate --config prisma/prisma.config.ts",
|
|
"db:migrate:dev": "prisma migrate dev --config prisma/prisma.config.ts",
|
|
"db:migrate:deploy": "prisma migrate deploy --config prisma/prisma.config.ts",
|
|
"db:seed": "prisma db seed --config prisma/prisma.config.ts",
|
|
"db:studio": "prisma studio --config prisma/prisma.config.ts",
|
|
"db:reset": "prisma migrate reset --config prisma/prisma.config.ts",
|
|
"db:push": "prisma db push --config prisma/prisma.config.ts",
|
|
"test:e2e": "playwright test",
|
|
"test:e2e:api": "playwright test --project=api",
|
|
"test:e2e:web": "playwright test --project=web",
|
|
"test:e2e:report": "playwright show-report",
|
|
"prepare": "husky"
|
|
},
|
|
"lint-staged": {
|
|
"*.{ts,tsx}": [
|
|
"eslint --fix",
|
|
"prettier --write"
|
|
],
|
|
"*.{json,md,yaml,yml}": [
|
|
"prettier --write"
|
|
]
|
|
},
|
|
"prisma": {
|
|
"seed": "tsx prisma/seed.ts"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.4",
|
|
"@playwright/test": "^1.59.1",
|
|
"@types/pg": "^8.20.0",
|
|
"dependency-cruiser": "^17.3.10",
|
|
"dotenv": "^17.4.1",
|
|
"eslint": "^9.39.4",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
"eslint-plugin-import-x": "^4.16.2",
|
|
"globals": "^17.4.0",
|
|
"husky": "^9.1.7",
|
|
"lint-staged": "^16.4.0",
|
|
"pg": "^8.20.0",
|
|
"prettier": "^3.8.1",
|
|
"prisma": "^7.7.0",
|
|
"tsx": "^4.21.0",
|
|
"turbo": "^2.9.4",
|
|
"typescript-eslint": "^8.58.0"
|
|
},
|
|
"dependencies": {
|
|
"@prisma/client": "^7.7.0"
|
|
}
|
|
}
|