Ho Ngoc Hai
9bb4c42f84
feat(web): listings page — ticker-style DataTable với toggle card view
...
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 >
2026-04-21 01:31:22 +07:00
Ho Ngoc Hai
017d85247e
fix(security): harden security headers across API and Web apps
...
- API: set X-Frame-Options to DENY via frameguard, add Permissions-Policy header, widen CSP connect-src for Swagger CDN
- Web: add HSTS header (1yr, includeSubDomains, preload), add payment=(self) to Permissions-Policy, make localhost:3001 in CSP connect-src dev-only
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-10 20:10:22 +07:00
Ho Ngoc Hai
2a8799ac5b
fix(ci): correct workflow branch targets from main to master
...
All three GitHub Actions workflows (CI, E2E, Deploy) referenced
branches: [main] but the repository default branch is master.
This meant CI never triggered on pushes or PRs to master.
- ci.yml: push/PR triggers → master
- e2e.yml: push/PR triggers → master
- deploy.yml: push trigger + latest tag condition → master
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-10 19:20:49 +07:00