Thách thức kỹ thuật
Ba thách thức chính định hình dự án. Thứ nhất là thay đổi nguồn dữ liệu mà không làm mất tính nhất quán: hệ thống bắt đầu với Google Sheets/Apps Script vì nhẹ và nhanh, nhưng khi nhu cầu quản trị, kiểm duyệt và an toàn dữ liệu tăng lên, website được chuyển sang PostgreSQL làm nguồn dữ liệu chính. Thứ hai là giữ cùng một mô hình nội dung cho hai client có kiến trúc khác nhau — Next.js trên web và Flutter trên mobile — mà không để logic nghiệp vụ bị sao chép rồi âm thầm lệch nhau. Thứ ba là biến tính trung thực và quyền riêng tư thành quy tắc của hệ thống: trạng thái dự án phải phản ánh đúng thực tế, thông tin khách hàng mặc định được ẩn khi chưa có quyền công khai, tiến độ ước lượng phải được ghi rõ là ước lượng, và Review chỉ được xuất bản khi trạng thái, visibility và consent đều hợp lệ.
Cách tôi tiếp cận
Kiến trúc được tách theo lớp dữ liệu để mỗi client có thể phát triển và kiểm thử độc lập, đồng thời giữ cùng hợp đồng dữ liệu công khai. Website Next.js hiện đọc nội dung từ PostgreSQL qua transport/repository riêng và quản lý thay đổi qua khu vực Admin được xác thực; môi trường local và preview được ngăn kết nối nhầm tới cơ sở dữ liệu production. Flutter vẫn dùng transport HTTP tới Apps Script/Google Sheets, và cả hai client đều có thể chạy với dữ liệu mẫu trong quá trình phát triển. Review được tách rõ giữa tiếp nhận và xuất bản: Google Form/Apps Script tiếp nhận dữ liệu ở trạng thái chờ, còn website chỉ công khai Review sau bước kiểm duyệt và xác nhận consent trong Admin. Cách tổ chức này phản ánh quá trình hệ thống phát triển từ kiến trúc Sheets/Apps Script ban đầu sang CMS PostgreSQL cho web mà không giả định mobile đã được migrate hoặc hai nguồn dữ liệu đang tự đồng bộ.
Kết quả tác động
Hệ thống hiện quản lý 15 dự án thực tế thuộc các nhóm chuyên môn, freelance và cá nhân. Nội dung công khai được lấy từ dữ liệu dự án thật, không dùng dự án hư cấu để lấp đầy portfolio; ngay cả case study của chính portfolio này cũng phải tuân theo cùng các quy tắc về trạng thái, quyền riêng tư và mức độ thông tin được phép công khai.
