Cover image
Nguyễn Thành Trương
Nguyễn Thành Trương
Software Engineering

Vibe coding: khi tôi không còn bắt đầu UI từ màn hình trắng

20/01/2026
332 views

27

#3 on leaderboard of challenge:
Khoảng vài tháng gần đây, tôi nhận ra mình ít viết UI từ con số 0 hơn trước, nhưng lại build được nhiều giao diện hơn. Không phải vì tôi giỏi frontend lên đột ngột, mà vì tôi bắt đầu dùng AI theo một cách khác: vibe coding.

Ban đầu tôi cũng khá dè chừng. UI do AI tạo ra thường có một mùi rất rõ: màu sắc hơi lố, spacing kỳ, nhìn là biết không phải người làm thật. Tôi từng thử vài lần và bỏ cuộc khá nhanh.

Sau này dùng nhiều hơn, tôi nhận ra vấn đề không nằm ở AI, mà nằm ở cách mình prompt.

Vấn đề của UI nhìn phát biết AI

Nếu bạn từng thử nhờ AI tạo UI, chắc không lạ gì mấy layout rất chuẩn sách: đủ component, đủ màu, đủ hiệu ứng, nhưng không có cá tính. Nhìn thì không xấu, nhưng cũng không muốn dùng lâu.

Lý do khá đơn giản: mình đang prompt AI như một cái máy viết code, trong khi UI thực chất là cảm giác.

Prompt kiểu: "Tạo cho tôi một dashboard bằng React" thì kết quả gần như chắc chắn là một UI generic, không có gì để nhớ.

Tôi bắt đầu prompt theo Vibe

Thứ tôi thay đổi đầu tiên là không nói về component trước. Tôi nói về cảm giác trước.

Ví dụ, thay vì nói dashboard, tôi mô tả:
  • tone màu trầm, ít màu
  • spacing rộng, chữ thoáng
  • cảm giác giống product SaaS hơn là website marketing
  • ưu tiên readability, không cần animation
Khi prompt bắt đầu giống cách một dev nói chuyện với designer, kết quả trả về khác hẳn. UI không còn quá AI, mà bắt đầu giống một sản phẩm có người đứng sau.
Post content image Screenshot 2026-01-19 235045.png 189 KB

Tôi dùng AI như một người design cùng

Tôi không copy-paste nguyên UI AI tạo ra rồi dùng luôn. Thường thì flow của tôi là như này:
  • Mô tả vibe + bối cảnh sản phẩm
  • Lấy layout tổng thể và vài component gợi ý
  • Chỉnh lại spacing, font, màu theo cảm giác của mình
  • Prompt tiếp: cái này vẫn hơi chật, bớt màu đi, cho cảm giác nhẹ hơn
Nghe thì có vẻ mơ hồ, nhưng thực tế nó rất giống cách làm việc với designer. Tôi không cần AI đúng ngay từ đầu. Tôi cần nó cho tôi một bản nháp đủ ổn để chỉnh tiếp.

Điểm khác biệt lớn nhất so với trước đây là: tôi không còn ngồi nhìn màn hình trắng nữa.

Prompt UI của tôi thường trông như thế nào?

Tôi không có một prompt thần thánh, nhưng có một cấu trúc tôi dùng rất thường xuyên. Đại khái sẽ gồm 4 phần, viết rất đời, không cần hoa mỹ:

1. Vai trò

Act as a frontend developer có gu UI, quen làm product SaaS nội bộ.

2. Bối cảnh

Đây là màn hình dashboard cho người dùng nội bộ, dùng hằng ngày, không phải landing page.

3. Vibe / cảm giác
  • tone màu trầm
  • spacing rộng, chữ thoáng
  • ít hiệu ứng
  • ưu tiên đọc lâu không mỏi mắt
4. Ràng buộc
  • dùng Tailwind + component đơn giản
  • không animation phức tạp
  • code dễ chỉnh lại bằng tay
Tôi hiếm khi nói kiểu tạo component X, Y, Z. Tôi để AI đề xuất, rồi tôi chọn.

Thứ vibe coding giải quyết tốt nhất

Trước đây, khi build UI, tôi hay bị kẹt ở đúng một chỗ: bắt đầu từ đâu.
  • Chọn layout trước hay chọn màu trước?
  • Dùng component nào cho đỡ quê?
  • Làm xong có phải đập đi làm lại không?
Vibe coding giải quyết đúng đoạn đó. Nó cho tôi một điểm xuất phát đủ ổn để tiếp tục. Thay vì nghĩ, tôi có cái để sửa. Và sửa thì dễ hơn nghĩ rất nhiều.

Điều thú vị là, sau vài vòng chỉnh sửa, UI cuối cùng không còn giống bản AI ban đầu nữa. Nhưng nếu không có bản đó, tôi sẽ không đi nhanh được như vậy.
Post content image Screenshot 2026-01-19 235112.png 352 KB

Vibe coding không thay thế Dev

Tôi không nghĩ vibe coding làm dev lười hơn. Ngược lại, nó giúp tôi tập trung vào những thứ đáng suy nghĩ hơn:
  • flow người dùng
  • logic hiển thị
  • trải nghiệm tổng thể
Những thứ như grid, base layout, spacing cơ bản… AI làm nhanh và đủ ổn. Tôi không cần chứng minh mình tự tay làm hết những phần đó nữa.

Một lưu ý nhỏ nhưng rất quan trọng

Nếu bạn không có gu, AI cũng không tự sinh ra gu cho bạn.
Prompt tốt không phải vì bạn dùng tiếng Anh hay, mà vì bạn biết mình muốn cảm giác gì. Bạn phải dám nói:
  • Cái này nhìn chưa ổn
  • Cái này trông hơi giả
  • Tôi không muốn UI kiểu marketing
AI chỉ là người phụ. Gu vẫn phải là của bạn.

Prompt mẫu

Code
Copied!
Act as a frontend developer with good UI taste, not a code generator.

Context:
I’m building a small habit tracking web app for personal use.
Users open it multiple times a day, so the UI must feel calm and effortless,
not flashy or marketing-oriented.

Tech stack:
- Next.js 14 (App Router)
- React + TypeScript
- Tailwind CSS
- Simple, custom components (no heavy UI library)

Vibe / Design intent:
- Neutral, muted color palette (gray, slate, soft accent)
- Generous spacing, breathable layout
- Minimal borders, avoid card overload
- Focus on readability and calmness
- Looks like a real product, not a demo or landing page
- No animations unless they add real clarity

UI scope:
Design the main “Today” screen that includes:
- A simple header with today’s date
- A list of habits with check/uncheck state
- Subtle visual feedback when a habit is completed
- A small progress indicator (daily completion, very minimal)

Constraints:
- Mobile-first, works well on small screens
- Use semantic HTML and accessible interactions
- Keep components easy to modify by hand later
- Avoid overengineering

Output:
1. Describe the layout and structure first (in words)
2. Then provide React + Tailwind code for the main screen
3. Keep the code clean, readable, and opinionated
Với tôi, vibe coding không phải là trend để khoe AI làm hết. Nó là một cách làm việc mới: viết code nhưng không bị mắc kẹt ở những đoạn không đáng mắc kẹt.

Nếu dùng đúng, UI tạo ra không còn nhìn phát biết AI, mà chỉ đơn giản là đủ ổn để tiếp tục làm product.

Và như vậy là đủ.
27