.claude/skills/frontend-dashboard/SKILL.md
Dashboard quản lý toàn bộ hệ thống — Next.js + TailwindCSS + shadcn/ui + PWA. Đa nền tảng (web + mobile + desktop) từ 1 codebase. Kích hoạt khi user cần giao diện quản lý, dashboard, hoặc app UI đầy đủ.
npx skillsauth add nguynbon03/API-XuongMedia-Backup frontend-dashboardInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
1 codebase → Web + Mobile (PWA) + Desktop (PWA). UI/UX đẹp, đầy đủ chức năng.
| Thành phần | Công nghệ | Lý do | |-----------|----------|-------| | Framework | Next.js 14 (App Router) | SSR, API routes, tối ưu SEO | | Styling | TailwindCSS | Nhanh, responsive, utility-first | | Components | shadcn/ui | Đẹp sẵn, accessible, customizable | | Icons | Lucide React | 1000+ icons, nhẹ | | State | Zustand | Đơn giản hơn Redux | | API Client | Axios hoặc fetch | Gọi FastAPI backend | | Charts | Recharts | Biểu đồ đơn giản, đẹp | | PWA | next-pwa | Cài app trên phone/desktop | | Auth | NextAuth.js | Đăng nhập API key | | Theme | Dark/Light mode | next-themes |
Next.js App
├── Web Browser → Mở URL là dùng (mọi thiết bị)
├── Mobile (PWA) → Bấm "Add to Home Screen" → app icon trên phone
└── Desktop (PWA) → Chrome → Install → app icon trên desktop
Không cần App Store, không cần build native. 1 deploy = chạy mọi nơi.
dashboard/
├── (auth)
│ └── login/ → Đăng nhập bằng API key
│
├── (dashboard)
│ ├── layout.tsx → Sidebar + Header chung
│ ├── page.tsx → Tổng quan (Overview)
│ │
│ ├── generate/
│ │ └── page.tsx → TẠO VIDEO — form nhập + nút Execute
│ │
│ ├── jobs/
│ │ ├── page.tsx → DANH SÁCH JOBS — bảng trạng thái
│ │ └── [id]/page.tsx → CHI TIẾT JOB — tiến trình + download
│ │
│ ├── accounts/
│ │ └── page.tsx → QUẢN LÝ ACCOUNT — nạp, xem, xóa
│ │
│ ├── pool/
│ │ └── page.tsx → TRẠNG THÁI POOL — workers, queue
│ │
│ ├── files/
│ │ └── page.tsx → QUẢN LÝ FILE — upload, download
│ │
│ ├── api-docs/
│ │ └── page.tsx → TÀI LIỆU API — Swagger embed
│ │
│ └── settings/
│ └── page.tsx → CÀI ĐẶT — API key, webhook, theme
│
└── api/ → API routes (proxy đến FastAPI backend)
┌──────────────────────────────────────────────────┐
│ [Sidebar] │ TỔNG QUAN │
│ │ │
│ 🏠 Tổng quan│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ 🎬 Tạo video│ │ Jobs │ │Credits │ │Account │ │
│ 📋 Jobs │ │ 156 │ │ 5,200 │ │ 12/15 │ │
│ 👥 Accounts│ │ hôm nay│ │ còn lại│ │ active │ │
│ ⚡ Pool │ └────────┘ └────────┘ └────────┘ │
│ 📁 Files │ │
│ 📖 API Docs│ [Biểu đồ jobs 7 ngày gần nhất] │
│ ⚙️ Cài đặt │ │
│ │ [Bảng: 10 jobs gần nhất] │
└──────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────┐
│ TẠO VIDEO MOTION CONTROL │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ ẢNH ĐẦU VÀO │ │ VIDEO THAM CHIẾU │ │
│ │ │ │ │ │
│ │ [Kéo thả ảnh] │ │ [Kéo thả video] │ │
│ │ hoặc paste URL │ │ hoặc paste URL │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ Chế độ: [Motion Control ▼] │
│ Thời lượng: [5 giây ▼] │
│ Tỷ lệ: [9:16 ▼] [16:9] [1:1] │
│ │
│ Webhook URL: [https://...] (tùy chọn) │
│ │
│ ┌─────────────────────────────────────┐ │
│ │ 🚀 TẠO VIDEO │ │
│ └─────────────────────────────────────┘ │
│ │
│ ┌─ Tạo hàng loạt ──────────────────┐ │
│ │ [Tải lên file CSV chứa nhiều job] │ │
│ └───────────────────────────────────┘ │
└──────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────┐
│ DANH SÁCH JOBS [🔍 Tìm kiếm] │
│ │
│ [Tất cả] [Đang chờ] [Đang xử lý] [Hoàn thành] │
│ │
│ ┌────┬──────────┬──────────┬────────┬─────────┐ │
│ │ ID │ Trạng thái│ Tiến trình│ Account│ Hành động│ │
│ ├────┼──────────┼──────────┼────────┼─────────┤ │
│ │ 01 │ ✅ Xong │ 100% │ acc_A │ [⬇️ Tải] │ │
│ │ 02 │ ⏳ Đang..│ 65% │ acc_A │ [👁️ Xem] │ │
│ │ 03 │ 🕐 Chờ │ 0% │ — │ [❌ Hủy] │ │
│ │ 04 │ ❌ Lỗi │ — │ acc_B │ [🔄 Thử] │ │
│ └────┴──────────┴──────────┴────────┴─────────┘ │
│ │
│ Trang: [< 1 2 3 4 5 >] │
└──────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────┐
│ QUẢN LÝ TÀI KHOẢN │
│ │
│ ┌─ Nạp tài khoản ─────────────────────────────┐ │
│ │ │ │
│ │ Dán danh sách (mỗi dòng: user:pass:proxy): │ │
│ │ ┌───────────────────────────────────────┐ │ │
│ │ │ [email protected]:pass123:http://p1:80 │ │ │
│ │ │ [email protected]:pass456:direct │ │ │
│ │ │ [email protected]:pass789:socks5://p3 │ │ │
│ │ └───────────────────────────────────────┘ │ │
│ │ │ │
│ │ [📁 Tải file CSV] [📥 NẠP TÀI KHOẢN] │ │
│ └───────────────────────────────────────────────┘ │
│ │
│ ┌─ Danh sách hiện tại (15 tài khoản) ─────────┐ │
│ │ ID │ Status │ Credits │ Proxy │ Xóa │ │
│ │ acc_A │ ✅ Active │ 800 │ p1:80 │ [🗑️] │ │
│ │ acc_B │ ✅ Active │ 1000 │ direct │ [🗑️] │ │
│ │ acc_C │ 💤 Hết │ 0 │ p3:80 │ [🗑️] │ │
│ │ acc_D │ ⛔ Cấm │ — │ p4:80 │ [🗑️] │ │
│ └───────────────────────────────────────────────┘ │
│ │
│ [🔄 Kiểm tra tất cả] [🔑 Đăng nhập lại tất cả]│
└──────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────┐
│ TRẠNG THÁI POOL [Auto refresh]│
│ │
│ Workers: 8/10 đang bận Queue: 23 jobs chờ │
│ ┌──────────────────────────────────────────┐ │
│ │ [=============================___] 80% │ │
│ └──────────────────────────────────────────┘ │
│ │
│ ┌────────┬────────┬────────┬────────┐ │
│ │Worker 1│Worker 2│Worker 3│Worker 4│ │
│ │ 🟢 Bận │ 🟢 Bận │ 🟢 Bận │ ⚪ Rảnh│ │
│ │ acc_A │ acc_A │ acc_A │ — │ │
│ │ job_12 │ job_13 │ job_14 │ │ │
│ │ 45% │ 20% │ 80% │ │ │
│ └────────┴────────┴────────┴────────┘ │
│ │
│ Nick đang dùng: acc_A (credits: 400/1000) │
│ Nick tiếp theo: acc_B (credits: 1000) │
└──────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────┐
│ CÀI ĐẶT │
│ │
│ API Key: [sk_live_xxxxxxxxx] [📋 Copy] │
│ Backend URL: [http://localhost:8000] │
│ │
│ Chiến lược xoay: [Fill-first ▼] │
│ Credits/video: [100] │
│ Max concurrent/nick: [10] │
│ Headless mode: [✅] │
│ │
│ Webhook mặc định: [https://...] │
│ │
│ Giao diện: [🌙 Dark] [☀️ Light] │
│ │
│ [💾 LƯU CÀI ĐẶT] │
└──────────────────────────────────────────────────┘
Code mẫu:
references/project-setup.sh — Khởi tạo project Next.js + shadcn/uireferences/layout-sidebar.tsx — Layout chung với sidebar responsivereferences/page-accounts.tsx — Trang quản lý account (nạp id:pass:proxy)references/page-generate.tsx — Trang tạo video (form + nút Execute)references/pwa-config.ts — Cấu hình PWA cho đa nền tảngNEXT_PUBLIC_API_URL| Nền tảng | Cách | |---------|------| | Web | Vercel (free) hoặc Docker | | Mobile | Mở web trên phone → "Add to Home Screen" | | Desktop | Chrome → 3 chấm → "Install app" |
development
Crawl website và trích xuất dữ liệu có cấu trúc bằng BeautifulSoup, Scrapy, Playwright. Hỗ trợ cả trang tĩnh và trang động (JS-rendered). Kích hoạt khi user cần lấy dữ liệu từ website bất kỳ.
tools
Upload video tự động lên TikTok, YouTube, Facebook, Instagram bằng browser automation (Playwright). Vì các nền tảng này không có public API cho upload, phải dùng browser automation. Kích hoạt khi user cần upload video lên bất kỳ nền tảng nào.
development
Xử lý video bằng Python — cắt ghép, thêm nhạc nền, phụ đề, watermark, resize, chuyển định dạng, render hàng loạt. Dùng ffmpeg-python và moviepy. Kích hoạt khi user cần xử lý video bất kỳ cách nào.
tools
Lập lịch chạy task tự động — cron job, xử lý hàng đợi, lập lịch hàng loạt. Dùng APScheduler, Celery, hoặc crontab. Kích hoạt khi user cần chạy task định kỳ hoặc xử lý hàng loạt theo lịch.