01Tổng quan
Sheet 01 / 12
Website giới thiệu năng lực của Công ty TNHH Vận tải Dịch vụ Đức Lộc (Phong Cốc, Quảng Yên, Quảng Ninh), đơn vị thi công nạo vét kênh mương, ao hồ bằng máy xúc đặt phao nổi, san lấp mặt bằng, vận tải và cho thuê máy xúc. Mục tiêu: khách hàng (chủ đầu tư, UBND xã/phường, hộ nuôi thủy sản, nhà thầu) tìm thấy công ty trên Google và Zalo, xem được năng lực thiết bị có đăng kiểm, rồi gọi hotline hoặc gửi yêu cầu báo giá.
Loại hìnhTrang tĩnh một trang (one‑page) + form
HostingCloudflare Pages (free)
Backend1 Pages Function (form liên hệ)
CSDLKhông cần
Chuyển đổi chínhGọi · Zalo · Form báo giá
Người quản trịSửa HTML / tải lại Pages
Nguyên tắc thiết kế
- Mobile first: 80% khách gọi từ điện thoại.
- Số hotline và Zalo luôn trong tầm ngón tay (nút nổi + thanh dưới).
- Ảnh thật tại công trường, không ảnh stock.
- Không framework, không build step: mở file là chạy.
Không nằm trong phạm vi
- Đăng nhập, tài khoản khách hàng.
- Thanh toán trực tuyến.
- CMS quản trị bài viết (bản 1).
- Đa ngôn ngữ.
Đầu vào còn thiếu [CẬP NHẬT]
- Tên miền chính thức (robots.txt, sitemap.xml).
- Email công ty (topbar, footer, biến
MAIL_TO). - Số Zalo nếu khác hotline 0936 516 887.
- Logo, ảnh, dịch vụ, dự án, thiết bị, nhân sự: đã lấy từ Hồ sơ năng lực 2026.
02Nền tảng & công nghệ
Sheet 02 / 12
| Tầng | Lựa chọn | Lý do |
| Giao diện | HTML5 + CSS thuần, font Be Vietnam Pro, JS tối thiểu (~40 dòng) | Tải nhanh trên 4G, không phụ thuộc thư viện, ai cũng sửa được. |
| Hosting / CDN | Cloudflare Pages (330+ PoP, có PoP tại Hà Nội, HCM) | Miễn phí, SSL tự động, băng thông không giới hạn, deploy bằng kéo thả hoặc Git. |
| Logic máy chủ | Cloudflare Pages Functions (Workers runtime) – functions/api/lien-he.js | Nhận form, gửi email qua Resend, chống spam; 100.000 request/ngày miễn phí. |
| Email thông báo | Resend API (hoặc Telegram Bot song song) | Không cần SMTP, 3.000 mail/tháng miễn phí, chạy được từ Workers. |
| Tên miền & DNS | Cloudflare DNS (proxy bật) | HTTPS, HTTP/3, chống DDoS, cache ảnh ở biên. |
| Bản đồ | Google Maps embed (iframe) | Không cần API key, chỉ đường đến Phong Cốc. |
| Đo lường | Cloudflare Web Analytics (không cookie) | Miễn phí, không cần banner cookie. |
Vì sao không dùng Vercel / WordPress? Yêu cầu của chủ đầu tư là hạ tầng Cloudflare. Trang tĩnh không cần máy chủ PHP, nên WordPress chỉ thêm chi phí hosting và rủi ro bảo mật. Cloudflare Pages đáp ứng toàn bộ nhu cầu với chi phí 0 đồng ngoài tên miền.
03Sơ đồ kiến trúc
Sheet 03 / 12
flowchart LR
U[Khách hàng
điện thoại / máy tính] -->|HTTPS| CF[Cloudflare Edge
DNS · SSL · WAF · Cache]
CF --> P[Cloudflare Pages
index.html · img/ · _headers]
CF -->|POST /api/lien-he| F[Pages Function
lien-he.js]
F -->|REST| R[Resend API
gửi email]
F -.->|tuỳ chọn| T[Telegram Bot]
R --> M[Hộp thư công ty]
U -->|tel:| H[Hotline 0936 516 887]
U -->|zalo.me| Z[Zalo OA / cá nhân]
P --> G[Google Maps embed]
Dev[Quản trị viên] -->|kéo thả thư mục
hoặc git push| P
Toàn bộ nội dung tĩnh phục vụ từ biên Cloudflare; chỉ form liên hệ chạy mã máy chủ. Nếu Function lỗi, trình duyệt tự chuyển sang nhắn Zalo với nội dung đã điền.
PUB Lớp công khai
- Trang chủ one‑page, tài liệu kiến trúc này.
- Ảnh đã nén (≤ 1600 px, JPEG q85), cache 1 năm.
- robots.txt, sitemap.xml, img/logo-mark.png.
SYS Lớp hệ thống
- Pages Function xử lý form (chạy tại PoP gần người dùng).
- Biến môi trường mã hoá:
RESEND_API_KEY, MAIL_TO, MAIL_FROM. - Header bảo mật qua tệp
_headers.
04Bản đồ trang
Sheet 04 / 12
flowchart TD
A["/ (index.html)"] --> A0[Hero + thẻ 4 chỉ số]
A --> A2[#dich-vu
6 dịch vụ]
A --> A1[#gioi-thieu
Pháp nhân · giá trị]
A --> A3[#nang-luc
Thiết bị · năng suất · nhân sự · địa bàn]
A --> A4[#du-an
6 thẻ ảnh + bảng 12 công trình]
A --> A5[#quy-trinh
5 bước]
A --> A6[#phap-ly
Chứng nhận]
A --> A7[#lien-he
Bản đồ · Form]
A --> B["/kien-truc.html
(noindex)"]
A --> D["/tai-lieu/ho-so-nang-luc-duc-loc-2026.pdf"]
A7 --> C["/api/lien-he (POST)"]
| Khu vực | Nội dung | Nguồn dữ liệu | Trạng thái |
| Hero | Tiêu đề, nút gọi + nút tải PDF, ảnh phao nổi, 4 chỉ số (5+ năm, 05 máy đào, 10 xe, 12 công trình) | HSNL 2026 tr.1–2, 7 | xong |
| Giới thiệu | Pháp nhân, tài chính 2026, tầm nhìn, sứ mệnh, giá trị, cam kết | HSNL tr.3–6, 28 | xong |
| Dịch vụ | 6 thẻ theo đúng 6 lĩnh vực trong hồ sơ | HSNL tr.8–11 | xong |
| Năng lực (#nang-luc) | Bảng 16 dòng thiết bị + 4 ô năng suất + nhân sự + địa bàn (gộp) | HSNL tr.13–15, giấy đăng kiểm | xong |
| Dự án | 6 thẻ ảnh + bảng 12 công trình, tổng 9,4 tỷ | HSNL tr.18–22 | xong |
| Pháp lý | 2 giấy đăng kiểm + giấy ĐKKD + link PDF hồ sơ | HSNL tr.16–17 | xong |
| Liên hệ | Thông tin, bản đồ, form 7 loại dịch vụ | — | chờ email Zalo tạm = hotline |
05Cấu trúc mã nguồn
Sheet 05 / 12
website/
├── index.html trang chủ (HTML + CSS + JS trong 1 tệp)
├── kien-truc.html tài liệu này
├── img/logo-mark.png
├── robots.txt · sitemap.xml
├── _headers header bảo mật + cache cho Cloudflare Pages
├── wrangler.toml cấu hình khi deploy bằng CLI / chạy thử local
├── README.md hướng dẫn deploy & cập nhật nội dung
├── img/ ảnh đã nén ≤ 1600 px + logo
│ ├── logo-full.png logo-white.png logo-mark.png (favicon)
│ ├── nao-vet-kenh-kobelco.jpg yanmar-phao-noi.jpg kobelco-can-dai.jpg
│ ├── komatsu-san-lap.jpg pha-do-nha-xuong.jpg xe-tai-van-chuyen.jpg …
│ └── dang-kiem-sk130ur.jpg dang-kiem-sk130ur-2.jpg giay-dkkd.jpg
├── tai-lieu/
│ └── ho-so-nang-luc-duc-loc-2026.pdf bản PDF 29 trang cho khách tải
└── functions/
└── api/
└── lien-he.js POST /api/lien-he → Resend / Telegram
Quy ước: tên tệp không dấu, chữ thường, gạch ngang. Mọi chỗ cần người dùng điền được đánh dấu lớp .todo (viền cam đứt) trong HTML và chú thích [CẬP NHẬT]; trước khi lên sóng chỉ cần tìm chuỗi todo để rà hết.
06Luồng xử lý chính
Sheet 06 / 12
Luồng A – Khách gọi / nhắn Zalo
- Khách tìm "nạo vét ao máy phao nổi Quảng Ninh" trên Google hoặc nhận link qua Zalo.
- Trang tải < 1,5 s trên 4G (ảnh hero ưu tiên, phần còn lại lazy).
- Nút gọi nổi (rung nhẹ) và thanh hotline dưới màn hình luôn hiện.
- Bấm gọi →
tel:0936516887; bấm Zalo → zalo.me/0936516887.
Luồng B – Gửi form báo giá
- Khách điền tên, SĐT, hạng mục, địa điểm, mô tả.
- JS gửi
POST /api/lien-he (FormData).
- Function kiểm tra honeypot, độ dài, định dạng SĐT.
- Gửi mail qua Resend (+ Telegram nếu bật). Trả về JSON.
- Thành công: báo "sẽ gọi lại". Lỗi: hiện link Zalo đã điền sẵn nội dung.
sequenceDiagram
participant K as Khách
participant B as Trình duyệt
participant F as Pages Function
participant R as Resend
K->>B: Bấm "Gửi yêu cầu"
B->>F: POST /api/lien-he (FormData)
F->>F: honeypot · validate SĐT · cắt độ dài
F->>R: POST /emails (Bearer RESEND_API_KEY)
R-->>F: 200 OK
F-->>B: {ok:true}
B-->>K: "Đã nhận yêu cầu"
Note over B,K: Nếu lỗi → link zalo.me kèm nội dung
07Dữ liệu & nội dung
Sheet 07 / 12
Không có cơ sở dữ liệu. Toàn bộ nội dung nằm trong HTML; yêu cầu báo giá được lưu tại hộp thư nhận (và Telegram). Dữ liệu pháp nhân đã đối chiếu:
| Trường | Giá trị | Nguồn |
| Tên | Công ty TNHH Vận tải Dịch vụ Đức Lộc | Giấy ĐKKD |
| Mã số thuế | 5702230003 | Hoá đơn GTGT 05/09/2026 |
| Địa chỉ | Khu Phong Cốc 4, P. Phong Cốc, Quảng Ninh | Giấy ĐKKD |
| Đại diện | Bùi Huy Cảnh – Giám đốc | Giấy ĐKKD |
| Vốn điều lệ | 5.000.000.000 đ | Giấy ĐKKD |
| Hotline | 0936 516 887 | Giấy ĐKKD |
| Thành lập | ĐKKD lần đầu 29/06/2026, TNHH một thành viên | Giấy ĐKKD |
| Thiết bị | 05 máy đào (Kobelco SK130UR‑2 2012, Saver 130UR 2000, Komatsu PC200‑8, Hitachi ZX70, Yanmar ViO30), 02 hệ phao, 10 xe tải, máy ủi, lu rung | HSNL tr.13–15, giấy đăng kiểm |
| Nhân sự | 10 quản lý/kỹ thuật + 39 công nhân/lái xe | HSNL tr.12 |
| Dự án | 12 công trình 2023–2026, tổng 9,4 tỷ đồng | HSNL tr.18–22 |
| Tài chính 2026 | TSCĐ 3,2 tỷ · nợ 0 · doanh thu dự kiến 2,5 tỷ | HSNL tr.24 |
Khi có danh sách dự án và thiết bị đầy đủ, bước nâng cấp hợp lý là tách dữ liệu ra data/thiet-bi.json, data/du-an.json và render bằng JS, để người quản trị chỉ sửa JSON thay vì HTML (xem Lộ trình).
08Bảo mật & tuân thủ
Sheet 08 / 12
Biện pháp kỹ thuật
- HTTPS bắt buộc, TLS 1.3, HSTS bật trong Cloudflare.
- Header:
X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy (tệp _headers).
- API key chỉ nằm trong biến môi trường mã hoá của Pages, không bao giờ ở mã nguồn.
- Chống spam form: honeypot, giới hạn độ dài, regex SĐT; có thể bật Cloudflare Turnstile và Rate Limiting khi cần.
- Không cookie, không theo dõi người dùng → không cần banner đồng ý.
Tuân thủ pháp lý Việt Nam
- Hiển thị đầy đủ tên, MST, địa chỉ, SĐT theo Nghị định 52/2013 về website thương mại.
- Website giới thiệu, không bán hàng trực tuyến → không phải đăng ký với Bộ Công Thương (chỉ cần thông báo nếu sau này có giỏ hàng).
- Thu thập tối thiểu dữ liệu cá nhân (tên, SĐT) đúng mục đích báo giá, phù hợp Nghị định 13/2023 về bảo vệ dữ liệu cá nhân.
- Ảnh giấy đăng kiểm đã che thông tin không cần thiết [kiểm tra lại trước khi đăng].
09Hiệu năng & SEO
Sheet 09 / 12
Mục tiêu LCP< 2,0 s (4G)
Tổng dung lượng trang< 1,2 MB
Request< 15
Lighthouse≥ 90 / 4 hạng mục
Kỹ thuật hiệu năng
- Ảnh nén ≤ 1600 px,
loading="lazy" trừ hero. - CSS nội tuyến, không thư viện JS.
- Cache ảnh 1 năm (immutable), HTML cache ở biên theo mặc định Pages.
- Font Google với
display=swap.
SEO địa phương
- Từ khoá: nạo vét kênh mương Quảng Ninh, máy xúc phao nổi, san lấp mặt bằng Quảng Yên, cho thuê máy xúc Hải Phòng.
- Title, meta description, Open Graph, sitemap, robots.
- Việc tiếp theo: tạo Google Business Profile trỏ về website, thêm JSON‑LD
LocalBusiness.
10Vận hành & triển khai
Sheet 10 / 12
Cách 1 – Kéo thả (khuyên dùng lúc đầu)
- Đăng nhập dash.cloudflare.com → Workers & Pages → Create → Pages → Upload assets.
- Đặt tên dự án
ducloc, kéo thư mục website/ vào. - Nhận địa chỉ
ducloc.pages.dev, bật SSL tự động.
Cách 2 – Wrangler CLI
npm i -g wrangler
wrangler login
wrangler pages deploy . --project-name ducloc
Chạy thử local kèm Function: wrangler pages dev .
Cách 3 – Git tự động
- Đẩy thư mục lên GitHub.
- Pages → Connect to Git → chọn repo, build command để trống, output
/. - Mỗi lần push là tự deploy, có preview cho từng nhánh.
| Việc | Ở đâu | Ghi chú |
| Gắn tên miền | Pages → Custom domains | Trỏ NS về Cloudflare hoặc thêm CNAME; SSL tự cấp. |
| Biến môi trường form | Pages → Settings → Variables and Secrets | RESEND_API_KEY, MAIL_TO, MAIL_FROM; đánh dấu Secret. |
| Thống kê truy cập | Pages → Web Analytics | Bật 1 nút, không cần sửa mã. |
| Sửa nội dung | Sửa index.html rồi deploy lại | Rollback 1 click về bản trước trong Deployments. |
| Sao lưu | Thư mục website/ + Git | Toàn bộ site là tệp tĩnh, copy là xong. |
11Chi phí
Sheet 11 / 12
| Khoản | Chi phí / năm | Ghi chú |
| Cloudflare Pages + Functions + DNS + SSL + Analytics | 0 đ | Gói Free đủ cho hàng triệu lượt xem. |
| Tên miền .vn / .com.vn | ~ 450.000 – 830.000 đ | Mua tại nhà đăng ký VN (PA, Mắt Bão, iNET…), DNS trỏ về Cloudflare. |
| Tên miền .com | ~ 250.000 – 350.000 đ | Có thể mua trực tiếp tại Cloudflare Registrar giá gốc. |
| Resend (email form) | 0 đ | 3.000 mail/tháng miễn phí. |
| Email tên miền (tuỳ chọn) | 0 – 1.500.000 đ | Cloudflare Email Routing chuyển tiếp miễn phí về Gmail; Google Workspace nếu cần hộp thư riêng. |
12Lộ trình
Sheet 12 / 12
- Bản 1 – One‑page với dữ liệu từ hồ sơ pháp lý, 5 ảnh công trường, form liên hệ.
- Bản 1.1 – Đã nạp logo, 9 ảnh, 6 dịch vụ, 16 dòng thiết bị, 12 công trình, nhân sự, địa bàn, PDF hồ sơ từ Hồ sơ năng lực 2026. Sẵn sàng deploy lên
*.pages.dev. Còn lại: email, tên miền → gắn tên miền; cấu hình Resend; bật Web Analytics.
- Bản 1.2 (hiện tại) – Bố cục lại theo mẫu centralcons.vn: nền trắng, dải xám kẻ chéo xen kẽ, thanh menu trắng chữ in hoa, thẻ chỉ số đè lên hero; hệ màu xanh sáng (
#0f5bd0) + cam (#f28c28); gộp Thiết bị + Nhân sự thành mục Năng lực.
- Bản 1.2 – Trang con cho từng dịch vụ (SEO), thư viện ảnh/video công trường, JSON‑LD LocalBusiness, Google Business Profile.
- Bản 2 – Tách dữ liệu ra JSON hoặc dùng Decap CMS / Cloudflare D1 để người không biết code tự thêm dự án; trang "Hồ sơ năng lực" tải PDF tự sinh.
- Bản 2.1 – Turnstile chống spam, Rate Limiting, theo dõi chuyển đổi (số lượt bấm gọi, Zalo) qua Cloudflare Analytics Engine.