Trong mảng thương mại điện tử (e-commerce), kiến trúc headless commerce đang dần trở thành tiêu chuẩn mới. Nếu bạn đang tìm kiếm một giải pháp bán hàng có khả năng tùy biến sâu, thì Vendure chính là cái tên bạn không thể bỏ qua.
Bài viết này sẽ đi sâu vào tìm hiểu Vendure – một nền tảng mã nguồn mở được xây dựng bằng TypeScript, Node.js, NestJS và GraphQL. Khác với Shopify hay WooCommerce vốn cố gắng phục vụ tất cả mọi người (one-size-fits-all), Vendure chọn một lối đi riêng: cung cấp một nền tảng linh hoạt, ít áp đặt, giúp bạn xây dựng hệ thống thương mại điện tử chính xác theo ý muốn.

Vendure là gì?
Hiểu một cách đơn giản, Vendure là một nền tảng thương mại điện tử headless mã nguồn mở. Điều này có nghĩa là:
- API-First Design: Mọi chức năng bán hàng đều được cung cấp qua API GraphQL; backend không quan tâm frontend của bạn là gì.
- Frontend Agnostic: Bạn có thể xây dựng giao diện bán hàng bằng bất cứ công nghệ nào mình thích: React, Vue, ứng dụng di động, hệ thống POS tại quầy, hay thậm chí là các thiết bị đeo thông minh (wearables).
- Highly Customizable: Kiến trúc plugin cho phép bạn mở rộng hầu như mọi ngóc ngách của hệ thống mà không cần sửa đổi mã nguồn cốt lõi.
Tóm lại, Vendure giống như “backend thương mại điện tử dành riêng cho developers”. Nó lo toàn bộ logic phức tạp (sản phẩm, đơn hàng, thanh toán…) và trao cho bạn quyền tự do gần như tuyệt đối về giao diện người dùng. Cực kỳ phù hợp cho anh em hệ vibe coding với AI.
Dưới đây là bảng so sánh nhanh để bạn thấy rõ vị thế của Vendure so với các đối thủ gạo cội:
| Khía Cạnh | Vendure | WooCommerce | Shopify |
| Headless | ✅ Yes (Thiết kế headless) | ❌ Không phải core headless | ✅ Yes (Storefront API) |
| Open Source | ✅ Yes (MIT) | ✅ Yes | ❌ No |
| Self-hosted | ✅ Yes | ✅ Yes | ❌ Không (SaaS) |
| Ngôn ngữ backend | ✅ TypeScript/Node.js | ❌ PHP/WordPress | ❌ Closed-source platform |
| GraphQL API | ✅ Full GraphQL (Admin & Shop) | ❌ Không core | ✅ GraphQL Storefront API |
| Type Safety | ✅ Rất tốt (end-to-end) | ❌ Hạn chế | ❌ Hạn chế |
| Customization | ✅ Rất cao (plugin + code) | ⚠️ Phụ thuộc WP/PHP | ⚠️ Giới hạn bởi SaaS |
| Learning Curve | ⚠️ Trung bình (Dev) | ✅ Dễ (Non-tech) | ✅ Dễ (Non-tech) |
| Chi phí | ✅ Miễn phí nền tảng | ✅ Free + Plugin | ❌ Trả phí tháng |
Các ưu điểm vượt trội của Vendure
TypeScript: Type Safety từ backend đến frontend
Với Vendure sử dụng TypeScript, mọi thứ trở nên minh bạch và an toàn:
// ✅ Good: Type-safe từ server
interface Product {
id: string;
name: string;
price: number;
description: string;
}
const product: Product = await getProduct(id);
console.log(product.name); // TypeScript sẽ kiểm tra type này tồn tại
console.log(product.price * 1.1); // TypeScript biết đây là numberGraphQL: API linh hoạt và hiệu năng cao
Nếu dùng REST API truyền thống, bạn thường gặp vấn đề lấy dư dữ liệu (over-fetching). Với GraphQL trong Vendure, bạn chỉ lấy đúng những gì mình cần:
query GetProduct($id: ID!) {
product(id: $id) {
id
name
price
reviews {
rating
comment
}
}
}NestJS: Cấu trúc module và khả năng mở rộng
Vendure được xây dựng trên NestJS giúp code của bạn được tổ chức rõ ràng (separation of concerns), dễ dàng viết test và mở rộng quy mô từ startup lên doanh nghiệp lớn.
Kiến trúc Plugin: Mở rộng sạch, ít đụng core
Thay vì sửa trực tiếp vào mã nguồn, Vendure khuyến khích bạn viết plugins để giữ cho nhân (core) luôn sạch và dễ nâng cấp.
Điều kiện tiên quyết
Yêu cầu phần mềm
| Phần mềm | Phiên bản khuyến nghị | Ghi chú |
| Node.js | 18.x LTS trở lên | Bản tối thiểu hỗ trợ Vendure v2.2 |
| npm / yarn | npm 9.x+ / Yarn 1.22+ | Trình quản lý gói |
| Database | PostgreSQL / MySQL / SQLite | PostgreSQL được khuyên dùng cho production |
Yêu cầu phần cứng
- RAM: Tối thiểu 2GB (khuyên dùng 4GB+).
- Disk Space: Khoảng 500MB cho project và database test.
- CPU: 1–2 cores.
Hướng dẫn cài đặt chi tiết
Chúng ta sẽ sử dụng CLI chính thức của Vendure để khởi tạo dự án một cách nhanh nhất.
Bước 1: Tạo dự án Vendure mới
Chạy lệnh sau trong terminal:
npx @vendure/create my-shopBước 2: Cấu hình qua CLI
Hệ thống sẽ lần lượt hỏi bạn:
- Package Manager: Chọn
npmhoặcyarn. - Database: Chọn
SQLitenếu muốn test nhanh, hoặcPostgreSQL/MySQLcho dự án thật. - Seed Data: Chọn Yes để nạp sẵn sản phẩm mẫu, giúp bạn dễ hình dung hệ thống.
Bước 3: Khởi chạy Server
cd my-shop
npm run devSau khi chạy thành công, bạn sẽ thấy các địa chỉ:
- Admin UI:
http://localhost:3000/admin - Shop API:
http://localhost:3000/shop-api - Admin API:
http://localhost:3000/admin-api
Cấu trúc dự án
Sau khi cài đặt, file quan trọng nhất bạn cần chú ý là vendure-config.ts. Đây là nơi cấu hình kết nối database, các plugin và phân quyền hệ thống.
Câu hỏi thường gặp (FAQ)
- Q: Vendure có sẵn sàng cho Production không?
- A: Có. Vendure hỗ trợ các tính năng enterprise như worker processes, RBAC và khả năng scale mạnh mẽ.
- Q: Tôi có cần biết NestJS không?
- A: Không bắt buộc, nhưng biết NestJS sẽ giúp bạn viết plugin và tùy chỉnh backend nhanh hơn.
- Q: Vendure có hỗ trợ đa ngôn ngữ không?
- A: Có. Hỗ trợ đa ngôn ngữ (multi-language) và đa tiền tệ (multi-currency) được tích hợp sẵn trong lõi.
Vendure là một lựa chọn tuyệt vời cho những ai muốn xây dựng một hệ thống e-commerce hiện đại, linh hoạt và có tính tùy biến cao. Với sự hỗ trợ mạnh mẽ từ TypeScript và GraphQL, trải nghiệm lập trình của bạn sẽ được nâng lên một tầm cao mới.
- Cài đặt và chạy thử dự án bằng lệnh
npx @vendure/create. - Thử truy vấn dữ liệu thông qua GraphQL Playground tại
/shop-api.








