Website cưới thường được nhìn như một tấm thiệp online đẹp mắt. Nhưng trong dự án Wedding, tôi tiếp cận nó như một mini-product thật: có dữ liệu trung tâm, có trải nghiệm khác nhau theo từng nhóm khách, có RSVP, có thông báo và có quy trình deploy rõ ràng.
Tóm tắt nhanh
- Website cưới được xây như một mini-product, không chỉ là một trang thiệp online đẹp.
- Nội dung chính được gom về nguồn dữ liệu tập trung để giảm sửa tay và giảm lệch thông tin.
- Link khách mời có thể cá nhân hóa theo nhóm khách, ví dụ lễ Huế, lễ Bình Định/Gia Lai hoặc link chung.
- RSVP, thông báo và deploy được tự động hóa với chi phí hạ tầng thấp.
1. Vấn đề
Một đám cưới có nhiều nhóm khách, nhiều mốc thời gian, nhiều địa điểm và nhiều thông tin cần cập nhật. Nếu chỉ làm một trang tĩnh đẹp, mỗi lần đổi nội dung sẽ phải sửa tay nhiều chỗ và dễ gửi nhầm thông tin cho khách không thuộc nhóm đó.
2. Ràng buộc
Chi phí hạ tầng cần gần như bằng 0, website phải deploy nhanh, dễ sửa, không phụ thuộc CMS trả phí. Đồng thời, các thông tin nhạy cảm như RSVP, thông báo Telegram, dữ liệu ngân hàng hoặc ghi chú nội bộ phải được tách khỏi phần code public.
3. Hướng tiếp cận
Toàn bộ nội dung chính được gom về một file dữ liệu dùng chung. HTML chỉ là khung, còn JavaScript render lịch trình, gallery, câu chuyện, FAQ và thông tin theo nguồn dữ liệu đó. Link khách mời có thể cá nhân hóa bằng tham số URL, để mỗi nhóm khách nhìn thấy thông tin phù hợp hơn.
4. Kết quả
- Một website cưới live trên Vercel, mỗi lần push có thể tự deploy lại trong vài phút.
- Nội dung sự kiện được quản lý tập trung, giảm sửa tay và giảm rủi ro lệch thông tin.
- Khách mời có trải nghiệm phù hợp hơn nhờ link cá nhân hóa theo nhóm khách.
- RSVP và thông báo được tự động hóa, không cần kiểm tra thủ công từng phản hồi.
5. Điều rút ra
Một sản phẩm web nhỏ vẫn có thể thể hiện rõ tư duy hệ thống: tách dữ liệu khỏi giao diện, thiết kế luồng người dùng, bảo vệ phần nhạy cảm, và giữ chi phí vận hành thấp. Đây là cùng một cách nghĩ tôi áp dụng khi xây website advisory, chatbot và các pipeline nội dung.