Đây là bản danh sách kiểm tra toàn diện dành cho lập trình viên để đảm bảo sản phẩm đạt chất lượng chuyên nghiệp nhất. Không sử dụng biểu tượng cảm xúc để đảm bảo tính nghiêm túc của tài liệu kỹ thuật.
1. Phân cấp thị giác và Bố cục (Visual Hierarchy & Layout)
- Có duy nhất một hành động chính (Primary CTA) nổi bật trên mỗi vùng nhìn thấy.
- Các hành động phụ được thiết kế với độ tương phản thấp hơn (Outline hoặc Ghost button).
- Sử dụng hệ thống Grid 12 cột cho toàn bộ ứng dụng.
- Căn lề thẳng hàng tuyệt đối giữa các thành phần (Align left là mặc định).
- Các thành phần liên quan được nhóm lại gần nhau (Luật Proximity).
- Sử dụng khoảng trắng (White-space) để phân tách các khu vực chức năng.
- Tránh việc nhồi nhét quá nhiều thông tin trên một màn hình đơn lẻ.
- Độ rộng nội dung văn bản giới hạn trong khoảng 600px - 800px để tối ưu việc đọc.
- Container chính có max-width xác định (thường 1200px - 1440px).
- Mọi thành phần đều có khoảng cách an toàn với mép màn hình (Padding).
- Sử dụng tiêu đề (Heading) để phân chia cấp bậc thông tin từ H1 đến H4.
- Hình ảnh và biểu đồ có chú thích rõ ràng.
- Không sử dụng quá 3 màu sắc có sắc độ trong một giao diện.
- Màu sắc mang tính thương hiệu được sử dụng nhất quán cho các thành phần hành động.
- Các đường kẻ phân cách (Dividers) có màu nhạt, không gây đứt quãng thị giác mạnh.
2. Hệ thống Khoảng cách (Spacing System)
- Tuân thủ hệ thống Spacing dựa trên bội số của 8 (hoặc 4).
- Padding dọc và ngang của nút bấm theo tỷ lệ chuẩn (thường 1:2).
- Khoảng cách giữa các phần tử trong danh sách là nhất quán.
- Khoảng cách giữa các Section lớn đạt mức 48px - 80px.
- Khoảng cách giữa Label và Input nằm trong khoảng 4px - 8px.
- Card padding nhất quán trên toàn bộ ứng dụng (16px hoặc 24px).
- Sử dụng hằng số (Variables) cho spacing thay vì dùng mã cứng (Hard-coded values).
- Không để các thành phần dính sát vào nhau nếu chúng không có quan hệ trực tiếp.
- Spacing trên mobile được thu nhỏ một cách hợp lý nhưng vẫn đảm bảo độ thở.
3. Chữ viết (Typography)
- Font-size mặc định cho nội dung chính là 16px.
- Không dùng quá 2 bộ font chữ khác nhau.
- Line-height cho văn bản dài đạt mức 1.5 - 1.6.
- Line-height cho tiêu đề đạt mức 1.1 - 1.25.
- Độ dài dòng văn bản nằm trong khoảng 45 - 75 ký tự.
- Độ tương phản màu chữ đạt chuẩn WCAG (tối thiểu 4.5:1).
- Phân biệt rõ ràng tiêu đề và văn bản bằng độ đậm (Font-weight).
- Tránh sử dụng font-size nhỏ hơn 12px trừ khi thực sự cần thiết (caption/legal).
- Không sử dụng toàn bộ chữ in hoa (ALL CAPS) cho các đoạn văn dài.
- Căn lề trái cho văn bản đọc, tránh căn giữa các đoạn văn dài.
- Sử dụng font chữ hỗ trợ đầy đủ tiếng Việt, không bị lỗi hiển thị dấu.
4. Màu sắc (Color)
- Sử dụng bảng màu Neutral (Xám/Zinc) cho các thành phần nền và text.
- Màu trạng thái (Xanh/Đỏ/Vàng) được dùng đúng ý nghĩa ngữ nghĩa.
- Tránh dùng màu đen tuyệt đối (#000) cho văn bản, ưu tiên xám cực đậm.
- Tránh dùng màu trắng tuyệt đối (#FFF) cho nền diện tích lớn ở Dark Mode.
- Đảm bảo màu thương hiệu vẫn dễ nhìn khi hiển thị trên các nền khác nhau.
- Không dùng màu sắc làm phương tiện duy nhất để truyền đạt thông tin (Cần có icon/văn bản đi kèm).
5. Tương tác và Phản hồi (Interactions & Feedback)
- Nút bấm có trạng thái Hover rõ ràng (thay đổi độ sáng hoặc bóng đổ).
- Nút bấm có trạng thái Active (Pressed) để xác nhận hành động click.
- Các thành phần click được có cursor: pointer.
- Hiển thị trạng thái Loading (Spinner hoặc Skeleton) khi xử lý tác vụ không đồng bộ.
- Có thông báo thành công (Success Toast/Message) sau khi hoàn tất hành động quan trọng.
- Thông báo lỗi rõ ràng, giải thích cách khắc phục thay vì chỉ báo lỗi chung chung.
- Tooltip được sử dụng cho các icon không đi kèm văn bản.
- Sử dụng hiệu ứng Transition mượt mà (150ms-300ms) cho các thay đổi UI.
- Người dùng có thể hủy (Cancel/Undo) các hành động quan trọng.
- Trạng thái Focus được hiển thị rõ ràng cho người dùng sử dụng bàn phím.
6. Biểu mẫu và Nhập liệu (Forms & Inputs)
- Label luôn hiển thị, không dùng Placeholder thay thế Label.
- Nhóm các trường liên quan vào các Fieldset hoặc Section.
- Input có chiều cao nhất quán (thường 40px hoặc 48px).
- Hiển thị thông báo lỗi ngay tại trường nhập liệu bị sai (Inline Validation).
- Đánh dấu rõ ràng các trường bắt buộc (thường dùng dấu *).
- Sử dụng đúng Input Type (email, tel, password, date).
- Nút Gửi (Submit) nằm ở vị trí dễ tìm thấy sau khi điền xong form.
- Form dài được chia thành nhiều bước (Multi-step).
- Tự động tập trung (Auto-focus) vào input đầu tiên nếu hợp lý.
- Ngăn chặn việc nhấn Submit nhiều lần (Disable button sau khi click).
- Cho phép người dùng xem mật khẩu đã nhập (Toggle password visibility).
7. Điều hướng (Navigation)
- Menu chính dễ tìm và luôn nhất quán giữa các trang.
- Sử dụng Breadcrumbs cho các ứng dụng có cấu trúc thư mục sâu.
- Logo luôn dẫn về trang chủ.
- Liên kết (Links) được phân biệt rõ ràng với văn bản thông thường (màu sắc/gạch chân).
- Trạng thái Active cho biết người dùng đang ở trang nào trong menu.
- Thanh tìm kiếm (nếu có) nằm ở vị trí dễ thấy (trên cùng bên phải hoặc giữa).
- Cung cấp Sitemap hoặc liên kết quan trọng ở Footer.
8. Trải nghiệm trên Di động (Mobile UX)
- Kích thước vùng tương tác tối thiểu là 44x44px.
- Không có hiện tượng cuộn ngang (Horizontal scroll) không mong muốn.
- Menu được tối ưu hóa (Hamburger menu hoặc Tab bar).
- Font-size không tự động zoom khi focus vào input trên iOS (thường > 16px).
- Các nút bấm quan trọng nằm trong vùng dễ chạm của ngón cái.
- Nội dung hình ảnh được resize phù hợp với màn hình nhỏ.
9. Khả năng Tiếp cận (Accessibility - a11y)
- Tuân thủ Semantic HTML (header, nav, main, section, footer).
- Hình ảnh có thuộc tính alt mô tả nội dung.
- Video có phụ đề hoặc mô tả văn bản.
- Có thể điều hướng toàn bộ website bằng phím Tab.
- Thứ tự Tab di chuyển theo logic từ trên xuống trái qua.
- Sử dụng ARIA labels cho các thành phần UI phức tạp.
- Không có hiệu ứng nhấp nháy nhanh gây nguy hiểm cho người bị động kinh.
10. Hiệu suất và Tốc độ (Performance)
- Hình ảnh được nén tối ưu (WebP/Avif).
- Sử dụng Lazy loading cho hình ảnh nằm ngoài vùng nhìn thấy ban đầu.
- Sử dụng Skeleton Screen để giảm cảm giác chờ đợi khi load dữ liệu.
- Third-party scripts (Google Analytics, Chat) được load không đồng bộ (defer/async).
- Fonts được tối ưu (swap strategy) để hiện text nhanh nhất có thể.
11. Tin cậy và Minh bạch (Trust & Transparency)
- Có trang Chính sách bảo mật và Điều khoản sử dụng.
- Hiển thị thông tin liên hệ rõ ràng.
- Các thông báo lỗi không làm lộ thông tin nhạy cảm của hệ thống/DB.
- Giá cả và phí ẩn (nếu có) được hiển thị minh bạch trước khi thanh toán.
- Có xác nhận trước khi thực hiện các hành động không thể hoàn tác (Xóa dữ liệu).
12. Chi tiết và Độ thẩm mỹ (Details & Aesthetics)
- Border radius nhất quán (ví dụ: tất cả đều bo 8px).
- Độ đậm của đường viền (Border-width) nhất quán (thường 1px).
- Sử dụng Shadow một cách tinh tế, tránh màu shadow quá đậm.
- Icons cùng một bộ sưu tập (Stroke width đồng nhất).
- Favicon được hiển thị trên trình duyệt.
- Trang 404 được thiết kế thân thiện, giúp người dùng quay lại trang chủ.
- Metadata (Tiêu đề, Mô tả) được cấu hình cho SEO và Social Sharing.
- Trạng thái trống (Empty State) có hướng dẫn người dùng phải làm gì tiếp theo.
Kết luận
Bản checklist này là một tiêu chuẩn động. Tùy vào tính chất của từng dự án mà bạn có thể ưu tiên các hạng mục khác nhau. Tuy nhiên, việc tuân thủ các quy tắc này sẽ giúp bạn xây dựng được một sản phẩm bền vững và được người dùng đánh giá cao.