Giới thiệu

Bài tập này gồm 2 phần liên tiếp — từ landing page đến dashboard quản lý:
  • Phần 1: Landing page với form liên hệ, lưu dữ liệu vào Firebase Firestore
  • Phần 2: Dashboard đọc và quản lý dữ liệu từ Firestore
Sau khi hoàn thành, bạn sẽ có:
  • Một landing page cho phép người dùng đăng ký tư vấn
  • Dashboard để xem, chỉnh sửa, xóa từng khách hàng

Phần 1 — Đề bài

Bài 1.1: Landing Page với HTML/CSS/JS thuần

Tạo một landing page gồm các phần như đã làm bài trước, nhưng cải tiến phần form liên hệ để gửi dữ liệu lên Firebase Firestore.

Form Liên hệ

Form đăng ký tư vấn gồm 4 trường:Form có nút Gửi đăng ký và hiển thị thông báo thành công sau khi gửi.
Yêu cầu kỹ thuật:
  • Sử dụng HTML, CSS, JavaScript thuần — không dùng framework
  • Responsive: Desktop và Mobile
  • Form validation phía client (các trường bắt buộc, định dạng email, số điện thoại hợp lệ)
  • Khi bấm Gửi đăng ký: gửi dữ liệu lên Firebase Firestore, collection tên là register_users, rồi hiện thông báo thành công
  • Dữ liệu gửi lên Firestore gồm: name, email, phone, message, createdAt (timestamp)

Bài 1.2: Tích hợp Firebase Firestore

Cấu hình Firebase trong landing page:
  1. Đăng ký tài khoản Firebase Console, tạo project mới
  2. Bật Firestore Database ở chế độ Test Mode
  3. Lấy cấu hình Firebase config và nhúng vào file HTML
Dữ liệu mỗi document trong register_users:

Phần 2 — Đề bài

Bài 2.1: Dashboard quản lý khách hàng tư vấn

Xây dựng dashboard trên nền Next.js + shadcn/ui với các yêu cầu sau:
1

Đọc dữ liệu từ Firestore

Sử dụng shadcn/ui Data Table để hiển thị danh sách khách hàng đăng ký tư vấn. Mỗi hàng hiện: STT, Họ và tên, Email, Số điện thoại, Ngày đăng ký.
2

Chức năng CRUD

Thêm, sửa, xóa khách hàng:
  • Thêm: Nút “Thêm khách hàng” mở Dialog/Sheet chứa form tương tự landing page
  • Sửa: Bấm icon sửa trên mỗi hàng → Sheet chỉnh sửa với form pre-filled
  • Xóa: Bấm icon xóa → Alert Dialog xác nhận trước khi xóa
3

Xem chi tiết (Sheet)

Bấm vào hàng hoặc icon mắt → Mở Sheet bên phải hiển thị toàn bộ thông tin khách hàng: Họ tên, email, phone, message, ngày đăng ký, thời gian tạo document
4

Tìm kiếm & Lọc

  • Thanh tìm kiếm theo tên hoặc email
  • Lọc theo ngày đăng ký (tuần này, tháng này, tùy chọn)
Sử dụng các shadcn/ui components đã học:

Phần 3 — Gợi ý hướng dẫn làm bài

Gợi ý Prompt để tạo với Claude Code

Landing Page

Dashboard


Kết quả thực tế

**Landing page: **
https://claude-code-basic-pages.vercel.app/landing-page.html
Dashboard quản lý khách hàng tư vấn:
https://claude-code-shadcnui-task-managemen.vercel.app/register-users

Tham khảo