Bản vẽ kiến trúc · Website doanh nghiệpCÔNG TY TNHH VẬN TẢI DỊCH VỤ ĐỨC LỘC

Mã tài liệu DL-WEB-ARCH-01
Phiên bản 1.2 · Ngày 24/10/2026
Nền tảng Cloudflare Pages · Trạng thái Bản 1.2 – bố cục mới, hệ màu xanh sáng; chờ tên miền & email

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ầngLựa chọnLý do
Giao diệnHTML5 + 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 / CDNCloudflare 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.jsNhận form, gửi email qua Resend, chống spam; 100.000 request/ngày miễn phí.
Email thông báoResend 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 & DNSCloudflare 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ườngCloudflare 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ựcNội dungNguồn dữ liệuTrạng thái
HeroTiê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, 7xong
Giới thiệuPháp nhân, tài chính 2026, tầm nhìn, sứ mệnh, giá trị, cam kếtHSNL tr.3–6, 28xong
Dịch vụ6 thẻ theo đúng 6 lĩnh vực trong hồ sơHSNL tr.8–11xong
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ểmxong
Dự án6 thẻ ảnh + bảng 12 công trình, tổng 9,4 tỷHSNL tr.18–22xong
Pháp lý2 giấy đăng kiểm + giấy ĐKKD + link PDF hồ sơHSNL tr.16–17xong
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

  1. 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.
  2. Trang tải < 1,5 s trên 4G (ảnh hero ưu tiên, phần còn lại lazy).
  3. Nút gọi nổi (rung nhẹ) và thanh hotline dưới màn hình luôn hiện.
  4. Bấm gọi → tel:0936516887; bấm Zalo → zalo.me/0936516887.

Luồng B – Gửi form báo giá

  1. Khách điền tên, SĐT, hạng mục, địa điểm, mô tả.
  2. JS gửi POST /api/lien-he (FormData).
  3. Function kiểm tra honeypot, độ dài, định dạng SĐT.
  4. Gửi mail qua Resend (+ Telegram nếu bật). Trả về JSON.
  5. 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ườngGiá trịNguồn
TênCông ty TNHH Vận tải Dịch vụ Đức LộcGiấy ĐKKD
Mã số thuế5702230003Hoá đơn GTGT 05/09/2026
Địa chỉKhu Phong Cốc 4, P. Phong Cốc, Quảng NinhGiấy ĐKKD
Đại diệnBùi Huy Cảnh – Giám đốcGiấy ĐKKD
Vốn điều lệ5.000.000.000 đGiấy ĐKKD
Hotline0936 516 887Giấy ĐKKD
Thành lậpĐKKD lần đầu 29/06/2026, TNHH một thành viênGiấ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 rungHSNL 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 xeHSNL tr.12
Dự án12 công trình 2023–2026, tổng 9,4 tỷ đồngHSNL tr.18–22
Tài chính 2026TSCĐ 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)

  1. Đăng nhập dash.cloudflare.com → Workers & Pages → Create → Pages → Upload assets.
  2. Đặt tên dự án ducloc, kéo thư mục website/ vào.
  3. 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

  1. Đẩy thư mục lên GitHub.
  2. Pages → Connect to Git → chọn repo, build command để trống, output /.
  3. Mỗi lần push là tự deploy, có preview cho từng nhánh.
ViệcỞ đâuGhi chú
Gắn tên miềnPages → Custom domainsTrỏ NS về Cloudflare hoặc thêm CNAME; SSL tự cấp.
Biến môi trường formPages → Settings → Variables and SecretsRESEND_API_KEY, MAIL_TO, MAIL_FROM; đánh dấu Secret.
Thống kê truy cậpPages → Web AnalyticsBật 1 nút, không cần sửa mã.
Sửa nội dungSửa index.html rồi deploy lạiRollback 1 click về bản trước trong Deployments.
Sao lưuThư mục website/ + GitToàn bộ site là tệp tĩnh, copy là xong.

11Chi phí

Sheet 11 / 12
KhoảnChi phí / nămGhi chú
Cloudflare Pages + Functions + DNS + SSL + Analytics0 đ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
  1. 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ệ.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.