Giới thiệu dự án
Sự phát triển mạnh mẽ của xu hướng làm việc từ xa (Work From Home - WFH) và mô hình làm việc kết hợp (Hybrid Working) hậu đại dịch đã thúc đẩy nhu cầu cá nhân hóa không gian làm việc tăng trưởng đột biến. Theo báo cáo từ Grand View Research, thị trường thiết bị và phụ kiện bàn làm việc công thái học (Ergonomic Desk Accessories) toàn cầu đạt quy mô hơn 14,8 tỷ USD vào năm 2023 và dự kiến duy trì tốc độ tăng trưởng kép hàng năm (CAGR) 12,5% giai đoạn 2024–2030. Tại Việt Nam, người dùng trẻ thuộc thế hệ Gen Z và Millennials chi trả trung bình từ 15% đến 25% ngân sách thiết bị công nghệ để đầu tư vào không gian làm việc nhằm tăng hiệu suất và bảo vệ sức khỏe.
Tuy nhiên, trải nghiệm mua sắm phụ kiện setup góc làm việc trực tuyến hiện nay đang đối mặt với nhiều rào cản lớn:
- Trải nghiệm mua sắm phân mảnh: Khách hàng phải tìm kiếm từng linh kiện (bàn nâng hạ, tay đỡ màn hình, bàn phím cơ, đèn treo màn hình, lót chuột, giá treo tai nghe) trên nhiều gian hàng khác nhau mà không có công cụ trực quan hóa tổng thể.
- Sai lệch kích thước và thẩm mỹ: Tỷ lệ đổi trả hàng phụ kiện setup do không vừa vặn kích thước bàn hoặc xung đột màu sắc/phong cách decor thực tế lên đến 22,4%.
- Thiếu công cụ trực quan hóa không gian: Đa số các sàn thương mại điện tử truyền thống chỉ cung cấp hình ảnh 2D tĩnh, gây khó khăn cho việc ước lượng không gian 3D.
Đồ án tốt nghiệp "Xây dựng App bán phụ kiện setup góc làm việc" được thực hiện bởi sinh viên Hoàng Nhất Vũ (MSSV: 20110751), dưới sự hướng dẫn của TS. Lê Vĩnh Thịnh tại Khoa Công nghệ Thông tin – Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE), nhằm giải quyết triệt để các rào cản trên.
Mục tiêu đề tài
- Nghiên cứu và xây dựng kiến trúc hệ thống thương mại điện tử đa nền tảng: Kết hợp NestJS (Backend API), Next.js (Web Admin/SSR) và React Native (Mobile App) nhằm tối ưu tốc độ phản hồi và tính bảo trì.
- Tích hợp công nghệ Thực tế tăng cường (AR - Augmented Reality): Cho phép người dùng ướm thử mô hình 3D của các phụ kiện trực tiếp lên mặt bàn làm việc thực tế theo tỷ lệ thực 1:1 qua camera điện thoại.
- Phát triển tính năng tìm kiếm thông minh: Tích hợp tìm kiếm sản phẩm bằng hình ảnh (Visual Search) và hệ thống Chatbot tư vấn cấu hình setup tự động.
- Tích hợp toàn diện các dịch vụ bên thứ ba: Xử lý thanh toán số qua cổng VNPay và tự động hóa tính toán chi phí vận chuyển, tạo vận đơn qua API Giao Hàng Nhanh (GHN).
Chỉ số kết quả kỳ vọng
- Thời gian phản hồi API: Dưới 150ms cho 95% request tải trang và danh mục.
- Độ trễ xử lý AR: Tối thiểu 30 FPS trên các thiết bị di động hỗ trợ ARCore / ARKit.
- Giảm thiểu thời gian chốt đơn (Time-to-Checkout): Giảm 40% thời gian tìm kiếm combo setup so với mua sắm thủ công.
- Phạm vi hệ thống: Hỗ trợ người dùng di động (Android 8.0+), ban quản trị trên nền tảng Web; tập trung chuyên sâu vào các dòng sản phẩm setup góc máy và thiết bị công thái học.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Khảo sát các nền tảng thương mại điện tử phổ biến tại thị trường Việt Nam cho thấy những ưu và nhược điểm rõ rệt:
| Tiêu chí |
Điện Máy Xanh App |
UNIQLO App |
Shopee / Lazada |
Hệ thống Đề xuất |
| Giao diện & Trải nghiệm (UI/UX) |
Rõ ràng, trực quan |
Tối giản, mượt mà |
Đa dạng nhưng phức tạp |
Hiện đại, tập trung vào Decor/Setup |
| Mô phỏng AR 3D |
Không hỗ trợ |
Không hỗ trợ |
Giới hạn (chỉ một số ít nhãn hàng) |
Hỗ trợ tương tác đa vật thể 3D trực tiếp |
| Tìm kiếm bằng hình ảnh |
Chưa hỗ trợ |
Hỗ trợ quét mã vạch |
Có hỗ trợ Visual Search |
Tích hợp Visual Search chuyên sâu phụ kiện |
| Mua trọn gói Combo Setup |
Mua từng sản phẩm rời |
Mua từng món |
Mua theo shop riêng lẻ |
1-Click Checkout toàn bộ Setup Designer |
| Tư vấn tự động (Chatbot) |
Kịch bản cố định |
Không có |
Chatbot kịch bản đơn giản |
Chatbot tư vấn phối màu và diện tích bàn |
Ma trận ưu tiên yêu cầu người dùng (MoSCoW)
- Must Have (Bắt buộc phải có): Xác thực tài khoản JWT + OTP qua Gmail, danh mục sản phẩm lọc theo thuộc tính/giá, giỏ hàng, thanh toán VNPay, tích hợp tạo vận đơn GHN, xem chi tiết mô hình 3D (AR Viewer).
- Should Have (Nên có): Tìm kiếm bằng hình ảnh, Chatbot tư vấn setup tự động, tính năng "Tạo thiết kế 3D" tùy biến phối nhiều sản phẩm trong một không gian.
- Could Have (Có thể có): Mua trọn combo từ các mẫu thiết kế có sẵn do Admin tạo, hệ thống đánh giá sản phẩm có kiểm duyệt tự động.
- Won't Have (Chưa phát triển trong phiên bản này): Sàn giao dịch đa người bán (Multi-vendor Marketplace), cộng đồng chia sẻ ảnh góc setup người dùng tự upload (Social Feed).
Thiết kế hệ thống
Hệ thống được xây dựng theo mô hình kiến trúc phân tầng (Layered Modular Architecture), phân tách độc lập giữa Presentation Layer, Application Business Layer và Data Persistence Layer:
[ Mobile App (React Native) ] <---+
|---> [ API Gateway / Load Balancer ]
[ Admin Web (Next.js 14 SSR) ] <--+ |
v
[ Backend Services (NestJS Modular Core) ]
| | |
v v v
[ MongoDB Atlas ] [ VNPay API ] [ GHN Express ]
Danh mục công nghệ chi tiết (Technology Stack)
- Backend Server: NestJS v10.x, TypeScript v5.x, Node.js v20 LTS.
- Mobile Client: React Native v0.73+, Redux Toolkit, React Native Viro / Three.js (AR Engine).
- Admin Management Web: Next.js v14 (App Router), TailwindCSS, React Query.
- Cơ sở dữ liệu: MongoDB v6.0+ (NoSQL Document Store), Mongoose ORM v8.x.
- Dịch vụ ngoài & Công cụ: VNPay Payment Gateway, GHN Open API, Nodemailer (Gmail SMTP), Cloudinary (Media/3D Storage), Docker & GitHub Actions.
Thiết kế Cơ sở dữ liệu (Database Schema)
Hệ thống sử dụng MongoDB với cấu trúc Document linh hoạt, tối ưu hóa cho các thuộc tính sản phẩm setup đa biến thể (màu sắc, kích thước, chất liệu, file 3D .glb/.gltf).
// Định nghĩa Mongoose Schema cho Product Entity
@Schema({ timestamps: true })
export class Product {
@Prop({ required: true, trim: true })
name: string;
@Prop({ required: true, unique: true })
slug: string;
@Prop({ type: Types.ObjectId, ref: 'Category', required: true })
category: Types.ObjectId;
@Prop({ required: true })
price: number;
@Prop({ default: 0 })
discountPrice: number;
@Prop({ type: [String], default: [] })
images: string[];
@Prop({ type: String, default: null })
model3dUrl: string; // Đường dẫn file 3D (.glb) phục vụ AR
@Prop({
type: [{
sku: String,
color: String,
material: String,
dimensions: { width: Number, length: Number, height: Number },
stock: Number
}],
default: []
})
variants: Array<{
sku: string;
color: string;
material: string;
dimensions: { width: number; length: number; height: number };
stock: number;
}>;
@Prop({ default: 0 })
averageRating: number;
}
export const ProductSchema = SchemaFactory.createForClass(Product);
Thiết kế RESTful API Core
| Method |
Endpoint |
Quyền truy cập |
Mô tả chức năng |
POST |
/api/v1/auth/register |
Public |
Đăng ký tài khoản và gửi mã OTP qua Email |
POST |
/api/v1/auth/verify-otp |
Public |
Xác thực OTP kích hoạt tài khoản |
POST |
/api/v1/auth/login |
Public |
Đăng nhập hệ thống, cấp phát Access/Refresh Token |
GET |
/api/v1/products |
Public |
Lấy danh sách sản phẩm có phân trang, bộ lọc đa tiêu chí |
POST |
/api/v1/products/search-image |
Public |
Tìm kiếm sản phẩm tương tự bằng hình ảnh đầu vào |
POST |
/api/v1/orders |
User (Bearer) |
Khởi tạo đơn hàng, tính phí GHN tự động |
POST |
/api/v1/orders/create-vnpay-url |
User (Bearer) |
Tạo URL chuyển hướng cổng thanh toán VNPay |
POST |
/api/v1/admin/designs |
Admin/Staff |
Thêm mẫu không gian 3D setup sẵn kèm combo phụ kiện |
Phương pháp luận phát triển (Methodology)
Dự án áp dụng quy trình phát triển phần mềm linh hoạt (Agile Scrum) rút gọn trong 16 tuần với 4 Sprint chính:
- Sprint 1 (Tuần 1 - 4): Phân tích nghiệp vụ, mô hình hóa Use Case, thiết kế ERD, thiết lập khung kiến trúc NestJS và MongoDB.
- Sprint 2 (Tuần 5 - 8): Xây dựng Authentication (JWT, OTP), Catalog Management, Shopping Cart và tích hợp API GHN, VNPay.
- Sprint 3 (Tuần 9 - 12): Phát triển Mobile App (React Native), tích hợp công nghệ AR 3D View, Visual Search và Chatbot.
- Sprint 4 (Tuần 13 - 16): Xây dựng Web Admin (Next.js), kiểm thử toàn diện (Unit Test, Integration Test, UAT), tối ưu hiệu năng và đóng gói.
Implementation và kết quả
Quy trình phát triển và Kỹ thuật lõi
1. Xử lý đặt hàng và giao dịch nguyên tử trong NestJS Service
Đảm bảo tính toàn vẹn dữ liệu khi nhiều người dùng cùng mua một sản phẩm tại cùng một thời điểm:
@Injectable()
export class OrderService {
constructor(
@InjectModel(Order.name) private orderModel: Model<OrderDocument>,
@InjectModel(Product.name) private productModel: Model<ProductDocument>,
private readonly ghnService: GhnService,
private readonly connection: Connection,
) {}
async createOrder(userId: string, createOrderDto: CreateOrderDto): Promise<Order> {
const session = await this.connection.startSession();
session.startTransaction();
try {
let totalAmount = 0;
for (const item of createOrderDto.items) {
const product = await this.productModel.findById(item.productId).session(session);
if (!product) throw new NotFoundException(`Sản phẩm ${item.productId} không tồn tại`);
const variant = product.variants.find(v => v.sku === item.sku);
if (!variant || variant.stock < item.quantity) {
throw new BadRequestException(`Sản phẩm ${product.name} (${item.sku}) không đủ tồn kho`);
}
// Trừ tồn kho nguyên tử
variant.stock -= item.quantity;
await product.save({ session });
totalAmount += (product.discountPrice || product.price) * item.quantity;
}
// Tính phí vận chuyển qua GHN API
const shippingFee = await this.ghnService.calculateFee({
toDistrictId: createOrderDto.shippingAddress.districtId,
toWardCode: createOrderDto.shippingAddress.wardCode,
weight: createOrderDto.totalWeight,
});
const newOrder = new this.orderModel({
user: userId,
items: createOrderDto.items,
shippingAddress: createOrderDto.shippingAddress,
totalAmount: totalAmount + shippingFee,
shippingFee,
paymentMethod: createOrderDto.paymentMethod,
orderStatus: 'PENDING_CONFIRMATION',
});
const savedOrder = await newOrder.save({ session });
await session.commitTransaction();
return savedOrder;
} catch (error) {
await session.abortTransaction();
throw error;
} finally {
session.endSession();
}
}
}
2. Kỹ thuật hiển thị mô hình AR 3D trên nền tảng React Native
Sử dụng thuật toán Raycasting xác định mặt phẳng ngang (Horizontal Plane Detection) để ghim vật thể 3D vào tọa độ không gian thực:
$$\vec{P}{\text{world}} = \vec{O}{\text{camera}} + t \cdot \vec{D}_{\text{ray}}$$
Trong đó $\vec{O}{\text{camera}}$ là tọa độ gốc camera, $\vec{D}{\text{ray}}$ là vector hướng chỉ định từ điểm chạm màn hình 2D $(x, y)$, và $t$ là khoảng cách giao cắt với mặt phẳng thực tế được nhận diện bởi cảm biến ARCore/ARKit.
// Component xử lý tương tác vật thể AR 3D trong React Native
import React, { useState } from 'react';
import { ViroARScene, Viro3DObject, ViroAmbientLight, ViroARPlaneSelector } from '@viro-community/react-viro';
export const DeskSetupARScene = ({ modelUrl, scale = [0.1, 0.1, 0.1] }) => {
const [objectPosition, setObjectPosition] = useState([0, 0, -0.5]);
const [rotation, setRotation] = useState([0, 0, 0]);
return (
<ViroARScene>
<ViroAmbientLight color="#ffffff" intensity={300} />
<ViroARPlaneSelector minHeight={0.1} minWidth={0.1} alignment="Horizontal">
<Viro3DObject
source={{ uri: modelUrl }}
position={objectPosition}
scale={scale}
rotation={rotation}
type="GLB"
dragType="FixedToWorld"
onDrag={(pos) => setObjectPosition(pos)}
onRotate={(rotateState, rotationFactor) => {
if (rotateState === 3) setRotation([0, rotation[1] + rotationFactor, 0]);
}}
/>
</ViroARPlaneSelector>
</ViroARScene>
);
};
Kiểm thử và Đánh giá hiệu năng
Hệ thống đã trải qua các đợt kiểm thử đơn vị (Unit Test), kiểm thử tích hợp (Integration Test) và kiểm thử chấp nhận người dùng (User Acceptance Testing - UAT).
+-------------------------------------------------------------------------------+
| TEST EXECUTION REPORT |
+------------------------------------+------------+----------+---------+--------+
| Test Suite Category | Executed | Passed | Failed | Rate |
+------------------------------------+------------+----------+---------+--------+
| 1. Authentication & Security (JWT) | 24 cases | 24 | 0 | 100% |
| 2. Cart & Inventory Transaction | 32 cases | 32 | 0 | 100% |
| 3. VNPay & GHN Webhook Integration | 18 cases | 18 | 0 | 100% |
| 4. AR 3D Scene Rendering Stability | 15 cases | 14 | 1 | 93.3% |
| 5. Visual Image Search Accuracy | 20 cases | 18 | 2 | 90.0% |
+------------------------------------+------------+----------+---------+--------+
| Total Execution Summary | 109 cases | 106 | 3 | 97.24% |
+------------------------------------+------------+----------+---------+--------+
Kết quả đo kiểm hiệu năng thực tế (Benchmarks)
- Tốc độ xử lý API (NestJS): Thời gian phản hồi trung bình (Average Latency) đạt $86\text{ ms}$ ở mức tải 200 CCU (Concurrent Users); đạt $142\text{ ms}$ ở mức đỉnh 800 CCU.
- Tỷ lệ bao phủ kiểm thử (Code Coverage): Đạt 84,6% trên toàn bộ các Service logic lõi.
- Độ chính xác tìm kiếm bằng hình ảnh (Top-3 Visual Match): Đạt 88,5% đối với các mẫu phụ kiện phổ biến (bàn phím cơ, tay nâng màn hình, loa để bàn).
- Mức tiêu hao tài nguyên ứng dụng di động: Tỷ lệ khung hình ổn định ở mức 58–60 FPS trong môi trường 2D thông thường và 32–40 FPS trong môi trường AR 3D chuyên sâu; dung lượng bộ nhớ RAM sử dụng trung bình là 185 MB.
Đổi mới và đóng góp
- Ứng dụng thực tiễn công nghệ AR vào lĩnh vực Niche E-Commerce: Khác với các ứng dụng mua sắm tổng hợp, hệ thống tối ưu không gian AR riêng biệt cho góc làm việc. Người dùng có thể kéo thả đồng thời nhiều phụ kiện (ví dụ: đặt giá treo tai nghe cạnh màn hình và khay đỡ bàn phím) để kiểm tra độ hài hòa về màu sắc và diện tích trước khi mua.
- Tính năng "1-Click Setup Bundle": Người dùng có thể duyệt qua các góc setup mẫu hoàn chỉnh do chuyên gia thiết kế, sau đó bấm mua toàn bộ các vật phẩm trong không gian chỉ với một thao tác duy nhất, giảm 65% thời gian tìm kiếm từng món lẻ.
- Kiến trúc phân tầng chuẩn hóa cao: Ứng dụng mô hình Modular Pattern của NestJS kết hợp Clean Architecture, giúp hệ thống dễ dàng mở rộng từ B2C sang mô hình Multi-vendor Marketplace mà không cần tái cấu trúc tầng cơ sở dữ liệu.
- Tự động hóa hoàn toàn chuỗi giao vận và thanh toán: Tích hợp sâu cổng thanh toán trực tuyến chuẩn VNPAY-QR và tự động đồng bộ trạng thái đơn hàng thời gian thực (Real-time tracking) với đơn vị vận chuyển GHN Express.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
- Người làm việc văn phòng / Lập trình viên: Cần nâng cấp góc làm việc công thái học với kích thước bàn hạn chế ($120\text{ cm} \times 60\text{ cm}$), sử dụng camera AR để đo đạc và ướm thử tay đỡ đôi màn hình xem có bị va vào tường hay không.
- Nhà sáng tạo nội dung / Streamer: Muốn trang bị hệ thống chiếu sáng, thanh treo tai nghe, loa kiểm âm đồng bộ tông màu xám không gian (Space Gray) mà không sợ lệch màu giữa các hãng sản xuất khác nhau.
[Khách hàng mở App]
|
v
[Chọn mẫu Setup ưng ý] ---> [Bật AR ướm thử vào phòng thực tế]
| |
v v
[Thêm combo vào giỏ] <--- [Kiểm tra kích thước chuẩn xác 100%]
|
v
[Thanh toán VNPay & Tự động tạo vận đơn GHN] ---> [Giao hàng tận nơi]
Hướng dẫn triển khai hạ tầng (Deployment Guide)
Hệ thống được đóng gói bằng Docker Container để triển khai đồng nhất trên môi trường Cloud (AWS EC2 / DigitalOcean):
# Dockerfile cho NestJS Backend Core
FROM node:20-alpine AS builder
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine AS runner
WORKDIR /usr/src/app
COPY --from=builder /usr/src/app/dist ./dist
COPY --from=builder /usr/src/app/node_modules ./node_modules
COPY package*.json ./
EXPOSE 3000
CMD ["node", "dist/main.js"]
Yêu cầu hệ thống tối thiểu (System Requirements)
- Server: Ubuntu 22.04 LTS, 2 vCPU, 4GB RAM, 40GB SSD NVMe, Docker v24.x & Docker Compose.
- Client Device: Điện thoại Android từ phiên bản 8.0 (Oreo) có hỗ trợ Google Play Services for AR; RAM tối thiểu 3GB.
Hạn chế và hướng phát triển
Hạn chế hiện tại
- Độ phụ thuộc phần cứng thiết bị AR: Các thiết bị di động phân khúc giá rẻ (thiếu con quay hồi chuyển Gyroscope hoặc không hỗ trợ ARCore) chỉ có thể xem mô hình 3D tương tác xoay 360 độ trên không gian ảo mà không thể ướm thử vào không gian thực qua camera.
- Kho dữ liệu mô hình 3D: Việc dựng file 3D chất lượng cao (Polygon tối ưu < 15,000 tris, kích thước < 5MB) đòi hỏi chi phí thiết kế và thời gian đóng gói ban đầu cho từng sản phẩm mới.
Kế hoạch phát triển trong tương lai
- Tích hợp AI Generative Room Layout: Ứng dụng mô hình AI nhận diện diện tích phòng qua ảnh chụp và tự động gợi ý phối cảnh bàn làm việc tối ưu phong thủy và công năng.
- Nâng cấp WebXR: Mang trải nghiệm thực tế ảo tăng cường trực tiếp lên trình duyệt Web thông qua chuẩn WebXR mà không cần cài đặt ứng dụng.
- Mở rộng hệ sinh thái Marketplace: Xây dựng cổng Portal riêng cho các xưởng mộc và thương hiệu phụ kiện tự tải lên sản phẩm và mô hình 3D.
Đối tượng hưởng lợi
+-----------------------------------------------------------------------------+
| GIÁ TRỊ CHO CÁC ĐỐI TƯỢNG |
+-------------------+---------------------------------------------------------+
| Sinh viên CNTT | Tài liệu tham khảo thực tế về Clean Architecture, |
| & Kỹ sư phần mềm | NestJS, tích hợp AR trong React Native và thanh toán số |
+-------------------+---------------------------------------------------------+
| Doanh nghiệp | Rút ngắn 60% thời gian ra mắt app bán hàng chuyên biệt; |
| Kinh doanh Decor | Giảm 25-30% tỷ lệ hoàn hàng nhờ công nghệ AR ướm trước |
+-------------------+---------------------------------------------------------+
| Khách hàng | Tiết kiệm 40% thời gian mua sắm, an tâm 100% về kích |
| Tiêu dùng cuối | thước và thẩm mỹ của góc làm việc cá nhân |
+-------------------+---------------------------------------------------------+
Câu hỏi thường gặp
1. Ứng dụng có thể chạy mượt mà trên các dòng điện thoại không có cảm biến LiDAR không?
Trả lời: Có. Module AR của ứng dụng sử dụng thuật toán Computer Vision dựa trên thư viện ARCore (cho Android) và ARKit (cho iOS). Thuật toán này phân tích các điểm đặc trưng hình ảnh (Feature Points) từ camera 2D tiêu chuẩn kết hợp cảm biến gia tốc để nhận diện mặt phẳng bàn mà không bắt buộc phải có cảm biến quang học LiDAR chuyên dụng.
2. Dữ liệu thanh toán của người dùng qua VNPay được bảo mật như thế nào?
Trả lời: Hệ thống tuân thủ chặt chẽ tiêu chuẩn an toàn bảo mật. Ứng dụng không lưu trữ bất kỳ thông tin thẻ hay tài khoản ngân hàng nào của người dùng. Mọi giao dịch được mã hóa bằng thuật toán băm HMAC-SHA512 kèm chuỗi bí mật (Secret Key) truyền trực tiếp sang cổng bảo mật của VNPay để xác thực IPN Checksum.
3. Quy trình đồng bộ đơn hàng với hãng vận chuyển GHN diễn ra như thế nào?
Trả lời: Ngay khi khách hàng xác nhận đơn hoặc thanh toán thành công, NestJS Backend sẽ tự động gọi API POST /shiip/public-api/v2/shipping-order/create của GHN với thông tin địa chỉ chuẩn hóa (ProvinceID, DistrictID, WardCode) cùng kích thước đóng gói. Mã vận đơn (Tracking Code) được lưu ngay vào đơn hàng để người dùng theo dõi hành trình trực tiếp trong app.
4. Chi phí duy trì hạ tầng máy chủ cho hệ thống ước tính khoảng bao nhiêu?
Trả lời: Trong giai đoạn khởi đầu với lưu lượng dưới 10.000 người dùng hàng tháng (MAU), chi phí duy trì chỉ khoảng $30 – $50 USD/tháng bao gồm: 1 VPS Cloud (2 Core / 4GB RAM), MongoDB Atlas Free/Shared tier, Cloudinary Free tier lưu trữ ảnh/3D, và tài khoản Email SMTP gửi mã OTP.
5. Làm cách nào để tối ưu hóa dung lượng các file 3D khi tải về điện thoại?
Trả lời: Toàn bộ file 3D định dạng .glb được tối ưu hóa vật liệu (PBR Material) và giảm số lượng đa giác (Decimation) dưới 15.000 polygons, sau đó nén texture bằng thuật toán Draco Compression giúp dung lượng mỗi file chỉ dao động từ 1,5MB đến 3,5MB, đảm bảo tải nhanh ngay cả qua kết nối mạng 4G.
Kết luận
Đồ án tốt nghiệp "Xây dựng App bán phụ kiện setup góc làm việc" của sinh viên Hoàng Nhất Vũ đã giải quyết xuất sắc bài toán thực tiễn trong thương mại điện tử chuyên ngành decor và công thái học. Việc kết hợp chặt chẽ giữa kiến trúc backend hiện đại NestJS, ứng dụng di động đa nền tảng React Native cùng công nghệ tương tác AR 3D và tìm kiếm thông minh đã mang lại trải nghiệm mua sắm vượt trội.
Hệ thống không chỉ đạt điểm số cao về tính ứng dụng kỹ thuật và độ hoàn thiện mã nguồn, mà còn mở ra tiềm năng thương mại hóa rõ ràng cho các doanh nghiệp bán lẻ nội thất và phụ kiện công nghệ trong kỷ nguyên chuyển đổi số.