Dự án thực hành

Landing page giới thiệu dịch vụ

Làm từ đầu tới lúc có link chạy thật: một trang giới thiệu dịch vụ nhỏ, có mẫu sản phẩm, bảng giá tham khảo và nút nhắn Zalo. Không backend, không dữ liệu cá nhân.

Mới bắt đầuĐầu ra: Một landing page tĩnh đã lên mạng, có link gửi khách.

Ví dụ trong dự án là giả định. “Mộc Lâm” là một xưởng mộc tưởng tượng để minh họa. Thay bằng dịch vụ của bạn: tiệm bánh, gia sư, sửa điều hòa, studio ảnh, xưởng cơ khí… Cấu trúc giống nhau.

Bạn sẽ có gì khi xong

  • Một trang web chạy trên điện thoại và máy tính, có tên miền miễn phí của dịch vụ deploy (hoặc tên miền riêng nếu bạn mua).
  • Bộ file BRIEF.md, NOTES.md, README.md và lịch sử Git sạch.
  • Một quy trình bạn lặp lại được cho dự án tiếp theo.

Cần biết trước: bài 1, 3, 4. Nên đọc bài 7, 8, 9 trong lúc làm. Công cụ: một chatbot hoặc agent bất kỳ, trình duyệt, Git (khuyên dùng).

Phạm vi

CóKhông có
Một trang dài, 6 khốiGiỏ hàng, thanh toán
Lưới 9 ảnh mẫu đã làmĐăng nhập, tài khoản
Bảng giá tham khảoForm lưu dữ liệu khách
Nút nhắn Zalo có nội dung soạn sẵnBlog, đa ngôn ngữ
SEO cơ bản, ảnh chia sẻTrang quản trị

Luồng người dùng

Khách thấy link (Zalo/Facebook) → Mở trên điện thoại
→ Đọc tiêu đề: hiểu xưởng làm gì trong 5 giây
→ Lướt ảnh mẫu → Xem khoảng giá
→ Bấm "Nhắn Zalo báo giá" → Zalo mở sẵn tin nhắn

Mọi quyết định thiết kế phục vụ luồng này. Thứ gì không giúp khách đi tới nút Zalo là thứ có thể bỏ.

Bố cục 6 khối

  1. Đầu trang: tên, một câu giá trị, nút Zalo, một ảnh sản phẩm đẹp nhất.
  2. Mẫu đã làm: lưới 9 ảnh, mỗi ảnh có tên, loại gỗ, kích thước.
  3. Bảng giá tham khảo: 4 loại sản phẩm, khoảng giá, dòng lưu ý.
  4. Quy trình 4 bước: Nhắn yêu cầu → Khảo sát, báo giá → Làm, cập nhật ảnh → Giao, lắp đặt.
  5. Hỏi đáp: 4–6 câu khách hay hỏi.
  6. Liên hệ: nút Zalo lần nữa, địa chỉ xưởng, giờ làm việc.

Chặng 1: Brief

Dùng prompt Phỏng vấn để viết Project Brief trong thư viện. Ví dụ brief hoàn chỉnh của Mộc Lâm có trong bài Từ ý tưởng đến Project Brief. Lưu thành BRIEF.md.

Kiểm: brief có mục KHÔNG làm; có ít nhất 5 tiêu chí nghiệm thu kiểm được.

Chặng 2: Chuẩn bị nội dung thật

Đây là chặng hay bị bỏ qua nhất, và là lý do nhiều landing page trông giả. AI không biết sự thật về dịch vụ của bạn.

Chuẩn bị trong thư mục noi-dung/:

  • 9 ảnh sản phẩm thật, đặt tên không dấu: ban-an-oc-cho.jpg.
  • File noi-dung.md:
## Đầu trang
Tên: Mộc Lâm
Một câu: Đồ gỗ đặt riêng theo kích thước nhà bạn, làm tại xưởng ở Hà Nội.
Số Zalo: [SỐ THẬT]

## Mẫu
1. Bàn ăn 6 ghế | gỗ óc chó | 180x90 cm | ban-an-oc-cho.jpg
2. ...

## Giá tham khảo
Bàn ăn: từ [GIÁ] đến [GIÁ] VNĐ
...

## Hỏi đáp
H: Bao lâu thì xong? Đ: [câu trả lời thật]
...

Ảnh nặng làm trang chậm. Nhờ AI hướng dẫn nén ảnh, hoặc dùng công cụ nén ảnh trực tuyến, mục tiêu dưới 300KB mỗi ảnh, cạnh dài khoảng 1600px.

Kiểm: không còn ô [GIÁ], [SỐ THẬT] chưa điền trước khi phát hành.

Chặng 3: Giao diện

Dùng prompt Mô tả giao diện cho AI. Chọn một phương án, ghi vào brief mục 6.

Kiểm: có bảng biến CSS (màu, font, khoảng cách); font hiển thị đúng dấu tiếng Việt.

Chặng 4: Dựng trang theo lát cắt

Dùng prompt Chia dự án thành lát cắt, rồi Giao việc 5 phần cho từng lát. Kế hoạch gợi ý:

LátNội dungKiểm bằng cách
1Khung trang, biến CSS, header, footerMở được, không lỗi Console
2Khối đầu trang + nút ZaloBấm nút trên điện thoại, Zalo mở đúng số
3Lưới ảnh mẫu1 cột trên điện thoại, 3 cột trên máy tính; ảnh không méo
4Bảng giáKhông cuộn ngang ở 375px
5Quy trình + hỏi đápHỏi đáp mở/đóng được bằng chuột và bàn phím
6Liên hệ + SEO + ảnh chia sẻ + faviconDán link vào Zalo thấy tiêu đề và ảnh

Sau mỗi lát chạy đúng: git add . và git commit -m "Lat N: ...".

Nút Zalo có nội dung soạn sẵn

Liên kết dạng https://zalo.me/[SỐ ĐIỆN THOẠI] mở trang chat Zalo với số đó. Bụi Code chưa tìm thấy tài liệu chính thức nào của Zalo về việc điền sẵn nội dung tin nhắn qua liên kết (tại ngày 16/10/2026). Cách làm chắc chắn chạy: đặt ngay cạnh nút một đoạn gợi ý để khách bấm sao chép:

Chào Mộc Lâm, tôi cần báo giá: [loại sản phẩm], kích thước khoảng [...], ở [quận/huyện].

Đây là ví dụ điển hình về việc phải kiểm thử thật: AI có thể khẳng định một tham số liên kết “điền sẵn tin nhắn” tồn tại. Bấm thử trên điện thoại trước khi tin.

Chặng 5: Kiểm thử

Test case

#BướcMong đợi
T1Mở trang trên điện thoạiThấy tên, câu giá trị và nút Zalo mà không cần cuộn
T2Bấm nút Zalo (đầu trang)Mở Zalo, đúng số
T3Bấm “Sao chép tin nhắn mẫu”Có thông báo đã chép; dán ra đúng nội dung
T4Cuộn tới bảng giá ở 375pxKhông cuộn ngang toàn trang
T5Dùng Tab từ đầu tới cuối trangĐi qua mọi nút, thấy rõ viền focus
T6Mở hỏi đáp bằng EnterCâu trả lời hiện ra
T7Dán link vào Zalo/FacebookĐúng tiêu đề, mô tả, ảnh
T8Mở F12, tab ConsoleKhông lỗi đỏ
T9Xem nguồn trang, tìm “key”, “token”Không có bí mật
T10Tìm chữ “[GIÁ]”, “Lorem”Không còn

Sau đó dùng prompt Review độc lập trước phát hành với mức phát hành C (công khai), và Checklist nghiệm thu giao diện.

Chặng 6: Deploy

Theo bài Đưa website lên mạng an toàn:

  1. Bản thử nhanh: kéo thả thư mục để có link gửi bạn bè góp ý.
  2. Bản chính: đẩy lên GitHub, kết nối Cloudflare Pages, Vercel hoặc Netlify.
  3. Đi hết Checklist trước khi deploy.
  4. Viết README.md bằng prompt Viết README.

Rủi ro và cách xử lý

Rủi roCách xử lý
AI bịa giá, số năm kinh nghiệm, lời khenRàng buộc “để [CẦN ĐIỀN], không bịa” trong mọi yêu cầu; kiểm T10
Ảnh nặng, trang chậm trên 4GNén ảnh dưới 300KB; dùng loading="lazy" cho ảnh dưới màn hình đầu
Sửa lát sau làm hỏng lát trướcCommit sau mỗi lát; chạy lại T1–T8 sau mỗi lần sửa
Giao diện “giống mọi website AI”Dùng ảnh thật, mô tả phong cách cụ thể, bỏ hiệu ứng mặc định

Bộ hồ sơ 4 file (làm một lần, dùng mọi dự án)

Dự án chuyên nghiệp không chỉ có code. Bốn file dưới đây là “hồ sơ” của dự án — tạo chúng trong lúc làm, không phải sau khi xong.

1. BRIEF.md — đã có ở Chặng 1

Một trang: làm gì, cho ai, phạm vi có/không có. Viết trước khi code.

2. ACCEPTANCE.md — tiêu chí nghiệm thu

Copy bảng test case ở Chặng 5 vào file này, thêm 2 cột:

# Nghiệm thu — Landing page [tên dịch vụ]

| # | Kiểm gì | Đạt khi nào | Kết quả | Ngày |
|---|---------|-------------|---------|------|
| T1 | Mở trên điện thoại | Thấy tên + nút Zalo không cần cuộn | ☐ | |
| T2 | Bấm nút Zalo | Mở đúng số Zalo | ☐ | |
| ... | ... | ... | ... | |

Nghiệm thu đạt khi TẤT CẢ các dòng đều tick. Một dòng chưa đạt = chưa xong.

3. BUG_LOG.md — nhật ký lỗi

Mỗi lỗi gặp trong lúc làm, ghi 3 dòng (xem bài 3 thất bại kinh điển):

# Nhật ký lỗi

## [ngày] — [tên lỗi ngắn]
- Hiện tượng: ...
- Nguyên nhân: ...
- Cách thoát: ...

4. TEST_PLAN.md — kế hoạch kiểm thử

Trước Chặng 5, viết file này: kiểm những gì, trên thiết bị nào, theo thứ tự nào. Dùng prompt Kịch bản kiểm thử thủ công để tạo nội dung, lưu kết quả vào đây.


Mở rộng sau khi xong (không làm trong dự án này)

  • Nhúng Google Form để nhận yêu cầu báo giá có cấu trúc (lưu ý chính sách riêng tư).
  • Thêm trang chi tiết cho từng mẫu.
  • Gắn analytics không cookie để biết khách bấm nút Zalo bao nhiêu lần.

Mời Bụi Code ly cà phê

Bụi Code miễn phí cho mọi người. AI viết code, còn người viết bài thì chạy bằng cà phê. Nếu bài học giúp được bạn, mời mình một ly nhé.

Kênh nhận ủng hộ đang được cập nhật. Muốn ủng hộ ngay, nhắn mình qua email phungnb@gmail.com.

Ủng hộ hoàn toàn tự nguyện. Chia sẻ Bụi Code cho một người đang cần cũng quý như một ly cà phê.