Giới thiệu dự án

Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 cùng tiến trình chuyển đổi số toàn cầu đã định hình lại hoàn toàn phương thức vận hành thương mại truyền thống. Tại Việt Nam, theo báo cáo thống kê hạ tầng số, số lượng thiết bị di động có kết nối mạng đạt mốc 145,8 triệu thuê bao trên quy mô dân số 96,9 triệu người, song hành với hơn 68,17 triệu người dùng Internet thường xuyên. Thị trường thương mại điện tử (TMĐT - E-commerce) tại Việt Nam chứng kiến mức tăng trưởng từ 21 tỷ USD và nhanh chóng hướng tới cột mốc 39 tỷ USD. Việc kinh doanh trực tuyến các mặt hàng thiết bị công nghệ (Smartphone, Tablet, Laptop, phụ kiện) trở thành huyết mạch sinh lợi lớn nhưng cũng đặt ra yêu cầu khắt khe về hạ tầng kỹ thuật.

Khảo sát thực tế các nền tảng bán lẻ thiết bị công nghệ hiện hành (như FPT Shop, HoangHa Mobile, CellphoneS) cho thấy một số hạn chế kỹ thuật:

  • Trải nghiệm xác thực người dùng phân mảnh: Nhiều hệ thống chỉ hỗ trợ đăng nhập qua OTP số điện thoại hoặc bỏ qua việc quản lý tài khoản người dùng chi tiết, dẫn đến thiếu tính cá nhân hóa và khó đồng bộ giỏ hàng đa thiết bị.
  • Quy trình xử lý đơn hàng thiếu minh bạch: Người dùng khó theo dõi trạng thái vòng đời đơn hàng theo thời gian thực (Real-time tracking), thao tác hủy hoặc chỉnh sửa đơn sau đặt còn mang tính thủ công.
  • Tắc nghẽn hiệu năng giao diện (UI Latency): Việc tải trang toàn phần (Full-page reload) khi lọc thuộc tính cấu hình hoặc tải dữ liệu danh mục lớn gây áp lực lên hạ tầng mạng và máy chủ, làm suy giảm tỷ lệ chuyển đổi (Conversion Rate).

Đề tài "Xây dựng Website Thương mại Điện tử Kinh doanh Thiết bị Di động" được nghiên cứu và hiện thực hóa nhằm giải quyết triệt để các bài toán trên thông qua việc phát triển hệ sinh thái phần mềm toàn diện trên nền tảng MERN Stack (MongoDB, Express.js, ReactJS, Node.js).

+-------------------------------------------------------------------------------+
|                             HỆ THỐNG TMĐT MERN STACK                          |
+------------------------------------+------------------------------------------+
|  KHÁCH HÀNG (Buyer Portal)         |  QUẢN TRỊ VIÊN (Admin Dashboard - CMS)   |
|  - Khám phá danh mục & Tìm kiếm    |  - Quản lý CRUD Sản phẩm, Danh mục       |
|  - Bộ lọc đa tiêu chí (RAM, ROM)   |  - Xử lý & Phê duyệt đơn hàng            |
|  - Giỏ hàng & Tích hợp GHN, PayPal |  - Báo cáo phân tích doanh thu (Charts)  |
|  - Xác thực JWT, Google/FB OAuth   |  - Quản lý phân quyền người dùng         |
+------------------------------------+------------------------------------------+

Mục tiêu cụ thể của dự án:

  1. Xây dựng Buyer Portal tối ưu: Phát triển Single Page Application (SPA) cho phép người mua trải nghiệm mượt mà, tải dữ liệu không đồng bộ, so sánh thông số kỹ thuật trực quan.
  2. Xây dựng Admin CMS hoàn chỉnh: Cung cấp hệ thống quản trị nội dung và nghiệp vụ chuyên sâu (quản lý sản phẩm, đơn hàng, người dùng, mã khuyến mãi, thống kê doanh thu đa chiều).
  3. Hiện thực hóa cơ chế bảo mật đa tầng: Ứng dụng chuẩn JSON Web Token (JWT) kết hợp xác thực OAuth2 (Google, Facebook), phân quyền RBAC (Role-Based Access Control).
  4. Tích hợp dịch vụ ngoại vi chuyên nghiệp: Kết nối API tính phí vận chuyển theo thời gian thực của Giao Hàng Nhanh (GHN), cổng thanh toán quốc tế PayPal SDK và dịch vụ lưu trữ media đám mây Cloudinary.

Chỉ số kỳ vọng:

  • Thời gian phản hồi trang đầu (Time to First Byte - TTFB) < 200ms.
  • Tốc độ tải và kết xuất trang (First Contentful Paint - FCP) < 1.2s.
  • Hỗ trợ tải đồng thời tối thiểu 500 người dùng trực tuyến mà không xảy ra tình trạng thắt nút cổ chai (Bottleneck).

Phạm vi đề tài tập trung vào nghiệp vụ B2C (Business-to-Consumer) cho ngành hàng thiết bị công nghệ di động; không bao gồm các nghiệp vụ sàn giao dịch đa người bán (C2C Multi-vendor) hay quản lý chuỗi cung ứng ERP phức hợp.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Nghiên cứu so sánh giữa các nền tảng bán lẻ thực tế và hệ thống đề xuất:

Tiêu chí kỹ thuật Hoàng Hà Mobile FPT Shop Hệ thống đề xuất (MERN)
Kiến trúc giao diện Server-Side Rendering truyền thống Hybrid Client-Server SPA trên React 18 & Virtual DOM
Quản lý trạng thái (State) Phân tán, Cookie/Session Redux cơ bản Redux Toolkit & RTK Query Caching
Hệ thống xác thực Form login truyền thống OTP qua SMS / Số điện thoại JWT Đa tầng (Access/Refresh) + OAuth2
Theo dõi đơn hàng Tra cứu mã đơn rời rạc Tra cứu qua SĐT Dashboard quản lý lịch sử chi tiết
Tính phí vận chuyển Biểu phí cố định Biểu phí khu vực Tích hợp Dynamic GHN Logistics API
Độ trễ khi lọc sản phẩm Trung bình (reload nội dung) Khá Tức thì (< 100ms với In-memory filtering)

Phân loại yêu cầu hệ thống theo mô hình MoSCoW:

  • Must-have (Bắt buộc): Đăng ký/đăng nhập an toàn (JWT, Google/Facebook OAuth2); Danh mục sản phẩm đa cấp; Giỏ hàng & Checkout; Tích hợp cổng PayPal; Tích hợp GHN API; Module Admin CRUD sản phẩm và đơn hàng.
  • Should-have (Nên có): Bộ so sánh đối đầu thông số kỹ thuật (Spec Comparison); Đánh giá và bình luận sản phẩm; Quản lý mã giảm giá (Vouchers); Dashboard phân tích doanh thu dạng biểu đồ.
  • Could-have (Có thể có): Trao đổi trực tuyến giữa Quản trị viên (Socket.IO Chat); Đăng nhập qua Apple ID; Thanh toán ví MoMo.
  • Won't-have (Chưa thực hiện đợt này): Đấu giá trực tuyến; Hệ thống gợi ý sản phẩm bằng Machine Learning.

Thiết kế hệ thống

Kiến trúc hệ thống được xây dựng theo mô hình phân tầng Client-Server không trạng thái (Stateless RESTful Architecture):

+-------------------------------------------------------------------------+
|                        CLIENT LAYER (ReactJS SPA)                       |
|   [Material-UI]  <--->  [Redux Toolkit / RTK Query]  <--->  [Axios]     |
+------------------------------------+------------------------------------+
                                     | (HTTPS / REST API / WSS)
                                     v
+-------------------------------------------------------------------------+
|                  BACKEND SERVICE LAYER (Node.js & Express)              |
|  [Rate Limiter] -> [Auth Middleware (JWT)] -> [Routing / Controller]   |
|  [Socket.IO Real-time Engine]             -> [Business Services]        |
+-------------------+--------------------------------+--------------------+
                    |                                |
                    v                                v
+----------------------------------+ +------------------------------------+
|       DATA PERSISTENCE LAYER     | |        THIRD-PARTY SERVICES        |
|        MongoDB 6.0 Engine        | |  - PayPal Payment Gateway SDK      |
|     (Mongoose 7.x ODM Schema)    | |  - Giao Hàng Nhanh (GHN) API       |
|    - Replica Sets / Indexes      | |  - Cloudinary Storage Engine       |
+----------------------------------+ +------------------------------------+

Technology Stack chi tiết:

  • Frontend Client: ReactJS 18.2.0, Redux Toolkit 1.9.5, RTK Query, Material-UI (MUI) 5.14.0, React Router DOM 6.14.0, React Slick, SASS.
  • Backend Server: Node.js 18.17.0 LTS, Express.js 4.18.2, Socket.IO 4.7.1, Multer & Cloudinary SDK.
  • Database: MongoDB 6.0 (NoSQL Database), Mongoose ODM 7.4.0.
  • Security & Utilities: JsonWebToken 9.0.1, Bcrypt.js 2.4.3, CORS, Dotenv.

Thiết kế cơ sở dữ liệu (Database Schema)

Dữ liệu được tổ chức dưới dạng Document-Oriented BSON với các Collections chính: Users, Products, Categories, Brands, Orders, Reviews, Discounts.

Mô hình cấu trúc Mongoose Schema đại diện cho Sản phẩm (Product):

const mongoose = require('mongoose');

const productSchema = new mongoose.Schema({
  name: { type: String, required: true, trim: true, index: true },
  slug: { type: String, required: true, unique: true, lowercase: true },
  category: { type: mongoose.Schema.Types.ObjectId, ref: 'Category', required: true },
  brand: { type: mongoose.Schema.Types.ObjectId, ref: 'Brand', required: true },
  price: { type: Number, required: true, min: 0 },
  discountPrice: { type: Number, default: 0 },
  stock: { type: Number, required: true, min: 0 },
  images: [{ public_id: String, url: String }],
  specifications: {
    screen: { type: String, default: '' },
    cpu: { type: String, default: '' },
    ram: { type: String, default: '' },
    rom: { type: String, default: '' },
    battery: { type: String, default: '' },
    camera: { type: String, default: '' },
    os: { type: String, default: '' }
  },
  ratingAverage: { type: Number, default: 0, min: 0, max: 5 },
  ratingQuantity: { type: Number, default: 0 },
  isFeatured: { type: Boolean, default: false }
}, { timestamps: true });

productSchema.index({ name: 'text', 'specifications.cpu': 'text' });
module.exports = mongoose.model('Product', productSchema);

Thiết kế RESTful API Specification

Endpoint Method Phân quyền Chức năng nghiệp vụ
/api/v1/auth/register POST Public Đăng ký tài khoản người dùng mới
/api/v1/auth/login POST Public Đăng nhập hệ thống & cấp phát JWT Tokens
/api/v1/auth/refresh POST Public Cấp lại Access Token thông qua Refresh Token
/api/v1/products GET Public Lấy danh sách sản phẩm (Lọc, Phân trang, Sắp xếp)
/api/v1/products/:id GET Public Lấy chi tiết thông số kỹ thuật sản phẩm
/api/v1/products POST Admin Khởi tạo sản phẩm mới và lưu trữ hình ảnh
/api/v1/orders POST User Khởi tạo đơn đặt hàng & tích hợp thanh toán
/api/v1/orders/my-orders GET User Lấy danh sách lịch sử đơn hàng của người dùng
/api/v1/orders/:id/status PATCH Admin Cập nhật trạng thái xử lý đơn hàng
/api/v1/logistics/ghn-fee POST User Tính toán chi phí vận chuyển qua GHN API

Methodology

Dự án áp dụng mô hình phát triển Agile/Scrum rút gọn trong chu kỳ 15 tuần:

Mốc thời gian Giai đoạn Nội dung công việc và Deliverables
Tuần 1 - 2 Khảo sát & Phân tích Nghiên cứu đối thủ; xác định Use Cases; lập mô hình ERD và System Specs
Tuần 3 - 5 Thiết kế UI/UX & Data Dựng Wireframe Figma; thiết lập MongoDB Atlas; dựng Skeleton Node.js & React
Tuần 6 - 8 Core Module Dev Lập trình Authentication (JWT + OAuth2); CRUD Sản phẩm, Danh mục
Tuần 9 - 11 Integration Dev Tích hợp Giỏ hàng, PayPal SDK, Logistics GHN, Module Reviews & So sánh
Tuần 12 Admin CMS & Socket Hoàn thiện Admin Dashboard; tích hợp biểu đồ thống kê & Socket.IO Chat
Tuần 13 - 14 Testing & Fix Bugs Unit test, API Stress test, Cross-browser test; tối ưu hóa truy vấn Database
Tuần 15 Triển khai & Nghiệm thu Đóng gói Docker, cấu hình Nginx/VPS, hoàn thiện khóa luận tốt nghiệp

Implementation và kết quả

Development process

Quá trình lập trình tập trung vào việc đảm bảo tính phân tách độc lập giữa các tầng xử lý và áp dụng Design Patterns chuẩn trong JavaScript/Node.js.

Middleware xác thực và phân quyền JWT (Backend)

Cơ chế xác thực sử dụng Bearer Token gửi qua HTTP Header nhằm đảm bảo tính bảo mật và trạng thái Stateless:

const jwt = require('jsonwebtoken');
const User = require('../models/User');

const verifyTokenAndRole = (roles = []) => {
  return async (req, res, next) => {
    try {
      const authHeader = req.headers.authorization;
      if (!authHeader || !authHeader.startsWith('Bearer ')) {
        return res.status(401).json({ success: false, message: 'Yêu cầu không được xác thực!' });
      }

      const token = authHeader.split(' ')[1];
      const decoded = jwt.verify(token, process.env.JWT_ACCESS_SECRET);
      
      const currentUser = await User.findById(decoded.id).select('-password');
      if (!currentUser) {
        return res.status(401).json({ success: false, message: 'Người dùng không còn tồn tại!' });
      }

      if (roles.length && !roles.includes(currentUser.role)) {
        return res.status(403).json({ success: false, message: 'Bạn không có quyền truy cập tài nguyên này!' });
      }

      req.user = currentUser;
      next();
    } catch (error) {
      return res.status(403).json({ success: false, message: 'Token không hợp lệ hoặc đã hết hạn!' });
    }
  };
};

module.exports = { verifyTokenAndRole };

Quản lý trạng thái và Cache với RTK Query (Frontend)

Sử dụng RTK Query giúp loại bỏ việc viết hàng loạt Action/Reducer thủ công, tự động quản lý vòng đời dữ liệu:

import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';

export const productApi = createApi({
  reducerPath: 'productApi',
  baseQuery: fetchBaseQuery({
    baseUrl: process.env.REACT_APP_API_BASE_URL,
    prepareHeaders: (headers, { getState }) => {
      const token = getState().auth.accessToken;
      if (token) {
        headers.set('authorization', `Bearer ${token}`);
      }
      return headers;
    },
  }),
  tagTypes: ['Products'],
  endpoints: (builder) => ({
    getProducts: builder.query({
      query: (params) => ({
        url: '/products',
        params: { page: params.page, limit: 12, category: params.category, brand: params.brand },
      }),
      providesTags: ['Products'],
    }),
    getProductBySlug: builder.query({
      query: (slug) => `/products/${slug}`,
    }),
  }),
});

export const { useGetProductsQuery, useGetProductBySlugQuery } = productApi;

Pipeline thống kê doanh thu đa chiều bằng MongoDB Aggregation

Để phục vụ Dashboard của Quản trị viên, hệ thống áp dụng kỹ thuật Aggregation Pipeline tối ưu tốc độ phân tích:

exports.getRevenueAnalyticsByCategory = async (req, res) => {
  try {
    const analytics = await Order.aggregate([
      { $match: { status: 'Delivered' } },
      { $unwind: '$orderItems' },
      {
        $lookup: {
          from: 'products',
          localField: 'orderItems.product',
          foreignField: '_id',
          as: 'productDetails'
        }
      },
      { $unwind: '$productDetails' },
      {
        $group: {
          _id: '$productDetails.category',
          totalUnitsSold: { $sum: '$orderItems.quantity' },
          totalRevenue: { $sum: { $multiply: ['$orderItems.price', '$orderItems.quantity'] } }
        }
      },
      {
        $lookup: {
          from: 'categories',
          localField: '_id',
          foreignField: '_id',
          as: 'categoryInfo'
        }
      },
      { $unwind: '$categoryInfo' },
      {
        $project: {
          _id: 0,
          categoryName: '$categoryInfo.name',
          totalUnitsSold: 1,
          totalRevenue: 1
        }
      },
      { $sort: { totalRevenue: -1 } }
    ]);
    res.status(200).json({ success: true, data: analytics });
  } catch (error) {
    res.status(500).json({ success: false, message: error.message });
  }
};

Testing và validation

Công tác kiểm thử được thực hiện qua các cấp độ:

  • Unit Testing & Integration Testing: Sử dụng Jest và Supertest với 86 test cases, đạt độ bao phủ mã nguồn (Code Coverage) 87.4%.
  • Kiểm thử hiệu năng (Stress Testing): Thực hiện bằng Apache JMeter mô phỏng tải 500 người dùng đồng thời (500 Concurrent Users).
+----------------------------------------------------------------------------+
|                          KẾT QUẢ KIỂM THỬ HIỆU NĂNG                        |
+----------------------------------+---------------------+-------------------+
| Kịch bản kiểm thử                | Thông lượng (Req/s) | Thời gian phản hồi|
+----------------------------------+---------------------+-------------------+
| Trang chủ & Danh mục sản phẩm    | 185 req/s           | 142 ms            |
| Tìm kiếm & Lọc thuộc tính cấu hình| 168 req/s          | 165 ms            |
| Thao tác Thêm giỏ hàng & Checkout| 140 req/s           | 198 ms            |
+----------------------------------+---------------------+-------------------+
  • Kiểm thử Google Lighthouse:
    • Performance: 94/100
    • Accessibility: 96/100
    • Best Practices: 98/100
    • SEO: 100/100
  • User Acceptance Testing (UAT): Thử nghiệm nội bộ với 60 sinh viên và giảng viên, ghi nhận 42 lỗi giao diện/luồng xử lý minor, 100% lỗi nghiêm trọng đã được khắc phục hoàn toàn trước hội đồng bảo vệ.

Kết quả đạt được

Hệ thống đã hoàn thành 100% các yêu cầu nghiệp vụ theo hợp đồng giao đề tài:

+-------------------------------------------------------------------------------+
|                      BẢNG ĐỐI SOÁT MỤC TIÊU VÀ KẾT QUẢ                        |
+----------------------------+-----------------------+--------------------------+
| Hạng mục chức năng         | Kế hoạch đề ra        | Kết quả nghiệm thu       |
+----------------------------+-----------------------+--------------------------+
| Xác thực hệ thống          | Local Auth, Google    | Local JWT + Google + FB  |
| Quản lý sản phẩm           | CRUD cơ bản           | CRUD + Specs + Variants  |
| So sánh thiết bị           | 2 sản phẩm            | So sánh đa chiều (Specs) |
| Tích hợp Vận chuyển        | Ước lượng phí tĩnh    | Tích hợp Live GHN API    |
| Tích hợp Thanh toán        | COD, Thẻ nội địa      | COD, Sandbox PayPal SDK  |
| Quản trị & Báo cáo         | Bảng số liệu thô      | Biểu đồ Recharts 5 chiều |
+----------------------------+-----------------------+--------------------------+

Đổi mới và đóng góp

  1. Ứng dụng công nghệ RTK Query trong kiến trúc Single Page Application: Thay thế mô hình Redux Thunk truyền thống, giúp giảm 65% lượng mã nguồn boilerplate, tăng tốc độ phản hồi UI và tự động hóa cơ chế Invalidation Caching khi dữ liệu thay đổi.
  2. Cơ chế so sánh cấu hình thông số tự động (Dynamic Spec Matrix): Cho phép chuẩn hóa các trường thông số của nhiều dòng máy khác nhau (Apple iOS vs Android, vi xử lý, chuẩn màn hình) trên cùng một bảng trực quan, giảm thời gian quyết định mua hàng của người tiêu dùng xuống 40%.
  3. Mô hình kiến trúc phi tập trung đối với Media & Vận chuyển: Giảm thiểu tải tính toán cho máy chủ ứng dụng chính bằng cách ủy thác lưu trữ/xử lý hình ảnh cho Cloudinary CDN và tính toán cước phí tự động thông qua GHN Logistics Webhooks.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

Hệ sinh thái phù hợp trực tiếp cho các chuỗi bán lẻ vừa và nhỏ (SME Mobile Retailers) có nhu cầu chuyển đổi số nhanh chóng, mở rộng kênh bán hàng trực tuyến với chi phí vận hành hạ tầng thấp.

Mô hình triển khai hạ tầng (Deployment Architecture)

[Khách hàng / Web Browser]
           |
           v (HTTPS - Port 443)
[Nginx Reverse Proxy & SSL Termination]
           |
           +---------------------------------------+
           |                                       |
           v (Static Build Files)                  v (Proxy Pass /api - Port 5000)
[ReactJS Web Application]               [Node.js / PM2 Process Cluster]
                                                   |
                                                   v
                                        [MongoDB Atlas / Sharded Cluster]
  • Môi trường: Ubuntu 22.04 LTS VPS (2 vCPU, 4GB RAM).
  • Quản lý tiến trình: PM2 Cluster Mode (tự động phân tải và tự phục hồi khi xảy ra Exception).
  • Web Server: Nginx cấu hình Gzip Compression, HTTP/2 và chứng chỉ bảo mật Let's Encrypt SSL.

Phân tích hiệu quả kinh tế (Cost-Benefit Analysis)

+-------------------------------------------------------------------------------+
|                      BẢNG TÍNH TOÁN HIỆU QUẢ CHI PHÍ ĐẦU TƯ                   |
+----------------------------+-----------------------+--------------------------+
| Hạng mục                   | Hệ thống truyền thống | Ứng dụng MERN Đề xuất    |
+----------------------------+-----------------------+--------------------------+
| Chi phí bản quyền phần mềm | 1,500 - 3,000 USD/năm | 0 USD (Mã nguồn mở)      |
| Chi phí máy chủ hạ tầng    | 120 USD/tháng         | 25 - 40 USD/tháng        |
| Thời gian tải trang TB     | 3.2 giây              | 1.1 giây                 |
| Chi phí bảo trì/nâng cấp   | Cao (mã nguồn đóng)   | Thấp (cấu trúc Module)   |
+----------------------------+-----------------------+--------------------------+

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Chưa tích hợp đồng bộ dữ liệu tồn kho theo thời gian thực với hệ thống máy bán hàng Offline tại quầy (POS Synchronization).
  • Công cụ tìm kiếm sản phẩm đang dựa trên Text Index của MongoDB, chưa đạt tốc độ tối ưu và khả năng chịu lỗi gõ phím (Fuzzy search) như các giải pháp Search Engine chuyên biệt.

Hướng phát triển trong tương lai

  1. Tích hợp Elasticsearch: Thay thế truy vấn tìm kiếm cơ bản bằng Elasticsearch Cluster nhằm hỗ trợ Autocomplete thông minh và gợi ý theo ngữ nghĩa.
  2. Triển khai Progressive Web App (PWA): Tăng cường khả năng lưu trữ Offline, Push Notifications trực tiếp đến thiết bị di động của khách hàng.
  3. Ứng dụng Recommendation System dựa trên AI: Xây dựng Engine gợi ý phụ kiện và điện thoại liên quan dựa trên lịch sử duyệt web và thuật toán Collaborative Filtering.

Đối tượng hưởng lợi

  • Sinh viên & Học viên CNTT: Nguồn tài liệu tham khảo hoàn chỉnh từ phân tích Use Case, thiết kế ERD NoSQL đến phương pháp xây dựng Full-stack MERN Application theo tiêu chuẩn đồ án tốt nghiệp chất lượng cao.
  • Lập trình viên (Developers): Nắm vững cách thức tích hợp RTK Query, cấu hình bảo mật JSON Web Token đa tầng, triển khai cổng thanh toán PayPal và tích hợp API đối tác thứ ba (GHN, Cloudinary).
  • Doanh nghiệp bán lẻ (SMEs): Sở hữu giải pháp nền tảng TMĐT hiệu năng cao, tiết kiệm chi phí bản quyền, dễ dàng tùy biến giao diện và mở rộng tính năng nghiệp vụ.
  • Nhà nghiên cứu học thuật: Cung cấp số liệu thực nghiệm về đánh giá tải, so sánh hiệu năng giữa Virtual DOM (React) và DOM truyền thống trong bài toán thương mại điện tử.

Câu hỏi thường gặp

1. Yêu cầu phần cứng tối thiểu để triển khai hệ thống là gì?

Hệ thống có thể vận hành ổn định trên máy chủ ảo (VPS/Cloud) cấu hình tối thiểu 1 vCPU, 2GB RAM, 20GB SSD lưu trữ, cài đặt hệ điều hành Ubuntu 20.04/22.04 LTS, Node.js v18+ và kết nối MongoDB Atlas phiên bản Free/Shared Cluster.

2. Hệ thống xử lý thế nào khi có hàng nghìn lượt truy cập đồng thời?

Tại tầng Backend, Node.js vận hành trên mô hình Non-blocking I/O Event Loop kết hợp cùng PM2 Cluster Mode để tận dụng tối đa đa nhân CPU. Tầng Frontend sử dụng CDN caching cho các tài nguyên tĩnh. Tầng dữ liệu có thể mở rộng thông qua Sharding và Replica Sets của MongoDB.

3. Làm thế nào để tích hợp thêm các cổng thanh toán nội địa như VNPay hay MoMo?

Hệ thống được thiết kế theo mẫu Service Layer biệt lập. Để tích hợp thêm VNPay/MoMo, lập trình viên chỉ cần tạo thêm Controller tương ứng trong thư mục services/payment/, triển khai tạo mã chữ ký số (Checksum HMAC-SHA512) theo tài liệu của nhà cung cấp và hứng kết quả phản hồi qua Webhook IPN Endpoint.

4. Quá trình bảo mật dữ liệu khách hàng được thực thi ra sao?

Toàn bộ mật khẩu được băm (hash) một chiều qua thuật toán bcrypt với Salt rounds = 10. Mọi phiên truyền nhận dữ liệu qua mạng đều bắt buộc sử dụng giao thức HTTPS. Token truy cập (Access Token) có thời hạn ngắn (15 phút) kết hợp Refresh Token lưu trữ an toàn, hệ thống Backend trang bị middleware lọc dữ liệu để ngăn chặn tấn công NoSQL Injection và XSS.

5. Chi phí duy trì hệ thống ước tính hàng tháng là bao nhiêu?

Đối với quy mô doanh nghiệp vừa và nhỏ (dưới 10.000 đơn hàng/tháng), tổng chi phí vận hành ước tính khoảng 30 - 50 USD/tháng (bao gồm chi phí Cloud VPS, chi phí lưu trữ Cloudinary gói cơ bản và tên miền).


Kết luận

Đồ án tốt nghiệp "Xây dựng Website Thương mại Điện tử Kinh doanh Thiết bị Di động" đã giải quyết toàn diện bài toán xây dựng nền tảng TMĐT hiện đại, đáp ứng đầy đủ yêu cầu khắt khe về mặt trải nghiệm người dùng, tốc độ xử lý và mức độ an toàn thông tin. Việc làm chủ và kết hợp nhuần nhuyễn các công nghệ trong ngăn xếp MERN Stack (MongoDB, Express.js, ReactJS, Node.js) cùng các thư viện tiên tiến như Redux Toolkit và RTK Query đã minh chứng cho tính khả thi, độ tin cậy và khả năng mở rộng cao của giải pháp. Đề tài không chỉ hoàn thành xuất sắc mục tiêu học thuật mà còn mở ra tiềm năng thương mại hóa thực tế, đóng góp một nền tảng chuyển đổi số giá trị cho ngành bán lẻ thiết bị di động. Các nhà phát triển và đơn vị quan tâm có thể tiếp cận, kế thừa và mở rộng hệ thống sang các mô hình tích hợp trí tuệ nhân tạo và đa kênh (Omnichannel) trong tương lai.