Giới thiệu dự án

Sự phục hồi mạnh mẽ của ngành du lịch toàn cầu hậu đại dịch COVID-19 đã thúc đẩy nhu cầu trải nghiệm và khám phá điểm đến mới. Theo báo cáo của Tổ chức Du lịch Thế giới (UNWTO), trong quý 1 năm 2023, lượng khách quốc tế đã phục hồi 80% so với trước đại dịch, đạt 235 triệu lượt (tăng gấp đôi so với cùng kỳ năm 2022). Tại khu vực Châu Á - Thái Bình Dương, Ngân hàng Phát triển Châu Á (ADB) dự báo tăng trưởng kinh tế đạt 4,8% nhờ sự đóng góp trọng yếu từ dịch vụ lữ hành. Tại Việt Nam, xu hướng số hóa du lịch thể hiện rõ qua mức tăng 600% lượng người theo dõi trên các kênh truyền thông du lịch và tỷ lệ tương tác Instagram đạt 5,61%.

Tuy nhiên, du khách hiện đại đang gặp phải hai rào cản lớn: sự phân mảnh thông tin trên các nền tảng mạng xã hội phổ quát (Facebook, Instagram) do tình trạng quá tải thông tin, quảng cáo và tin giả; cùng với sự thiếu hụt tính năng tương tác cộng đồng thời gian thực trên các nền tảng OTA (Online Travel Agency) thuần thương mại như Travelocity hay TripAdvisor.

Đề tài khóa luận tốt nghiệp "Xây dựng mạng xã hội du lịch" (Building a Travel Social Network) do sinh viên Nguyễn Đức Chí Đạt và Hồ Quang Linh thực hiện tại Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin (ĐHQG-HCM) dưới sự hướng dẫn của ThS. Trần Thị Hồng Yến giải quyết trực diện bài toán này.

                    +-------------------------------------------------+
                    |          MẠNG XÃ HỘI DU LỊCH (UIT)              |
                    +-------------------------------------------------+
                                      |
         +----------------------------+----------------------------+
         |                                                         |
+------------------+                                     +-------------------+
|  MẠNG XÃ HỘI     |                                     | NỀN TẢNG THƯƠNG MẠI|
|  - Bảng tin (Feed)|                                     | - Cửa hàng dịch vụ|
|  - Chat & Video  |                                     | - Gói tour/Sự kiện|
|  - Hội nhóm/Blog |                                     | - Cổng thanh toán |
+------------------+                                     +-------------------+
         |                                                         |
         +----------------------------+----------------------------+
                                      |
                    +----------------------------------+
                    |    UNIVERSAL RECOMMENDER ENGINE   |
                    |    - Gợi ý điểm đến cá nhân hóa  |
                    |    - Gợi ý kết bạn cùng sở thích |
                    +----------------------------------+

Mục tiêu dự án

  1. Xây dựng nền tảng MERN Stack tích hợp: Phát triển hệ thống mạng xã hội chuyên biệt cho du lịch, tối ưu trải nghiệm tương tác trực tuyến giữa du khách, doanh nghiệp lữ hành và quản trị viên.
  2. Ứng dụng Machine Learning trong cá nhân hóa: Triển khai giải thuật The Universal Recommender để gợi ý điểm đến, lịch trình và bạn đồng hành dựa trên hành vi người dùng.
  3. Truyền thông thời gian thực: Tích hợp giao thức WebSocket qua Socket.IO và WebRTC hỗ trợ nhắn tin đa phương tiện, gọi thoại và video call độ trễ thấp.
  4. Hỗ trợ thương mại B2B2C: Cung cấp cổng quản lý dịch vụ, gói tour (Package Travel) và thanh toán trực tuyến cho các đối tác doanh nghiệp.

Phạm vi và chỉ số kỳ vọng

  • Chỉ số hệ thống: Thời gian phản hồi API trung bình $< 200\text{ ms}$, độ trễ WebSocket $< 50\text{ ms}$, hỗ trợ tối thiểu 1.000 kết nối đồng thời (CCU).
  • Phạm vi đối tượng: Phân quyền 3 nhóm tác nhân gồm Admin (Quản trị hệ sinh thái), Doanh nghiệp (Bán dịch vụ, phân tích thị trường), Người dùng (Chia sẻ trải nghiệm, đặt dịch vụ).
  • Giới hạn kỹ thuật: Hệ thống giai đoạn 1 tập trung trên nền tảng Web Application, hỗ trợ tiếng Việt và các phương thức thanh toán nội địa mô phỏng.

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

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

Khảo sát thị trường cho thấy sự phân hóa rõ rệt giữa mạng xã hội tổng quát và các website lữ hành chuyên dụng:

Tiêu chí Facebook / Instagram Travelocity / TripAdvisor Mạng xã hội du lịch (Đề tài)
Đặc thù hóa nội dung Thấp (Đa chủ đề, nhiều spam) Cao (Thuần thông tin lưu trú, vé máy bay) Chuyên sâu du lịch, tích hợp bản đồ
Tương tác cộng đồng Cao (Feed, Group, Chat) Rất thấp (Chỉ đánh giá/review 1 chiều) Toàn diện (Feed, Chat, Video Call, Group)
Hệ thống gợi ý (Recommender) Theo dõi hành vi đa lĩnh vực Lọc theo giá/vị trí cố định Universal Recommender theo hành vi du lịch
Không gian cho doanh nghiệp Fanpage & Ads đấu thầu đắt đỏ Đăng ký niêm yết bán phòng/vé Dashboard doanh nghiệp + Cửa hàng gói dịch vụ
Giao diện & Trải nghiệm Phức tạp, dễ xao nhãng Bố cục dạng sàn thương mại điện tử Tối giản, tập trung vào hành trình khám phá

Phân tích yêu cầu theo khung MoSCoW

  • Must-have (Bắt buộc): Xác thực JWT phân quyền (Admin, Enterprise, User); Đăng bài, bình luận, tương tác đa phương tiện; Nhắn tin thời gian thực (Socket.IO); Gợi ý điểm đến với Machine Learning; Quản lý hồ sơ và danh mục địa điểm.
  • Should-have (Cần có): Gọi video call (WebRTC); Quản lý sự kiện, tạo nhóm lữ hành; Dashboard thống kê doanh thu và tương tác cho doanh nghiệp.
  • Could-have (Có thể có): Tích hợp Chatbot hỗ trợ tự động qua DialogFlow; Bản đồ số định vị tọa độ tương tác.
  • Won't-have (Chưa thực hiện): Ứng dụng di động Native (iOS/Android); Tích hợp cổng thanh toán quốc tế đa tiền tệ.

Thiết kế hệ thống

Hệ thống tuân thủ kiến trúc phân tầng Client - Server hiện đại, tách biệt hoàn toàn giữa giao diện người dùng và lớp dịch vụ dữ liệu:

[ CLIENT TIER ]
   ├── ReactJS SPA (v18.2.0)
   ├── Redux Toolkit (State Management)
   └── WebRTC / Socket.IO Client (Real-time Communication)
          │  ▲ (HTTPS / WSS Protocol)
          ▼  │
[ SERVER TIER - Node.js & Express.js (v18.16.0 LTS) ]
   ├── API Gateway & Auth Middleware (JWT, Bcrypt)
   ├── Social Service (Posts, Stories, Groups, Events)
   ├── Chat & Call Gateway (Socket.IO Server v4.6.1)
   └── Analytics & Payment Controller
          │  ▲
          ▼  │
[ DATA & ML TIER ]
   ├── MongoDB (v6.0 NoSQL Document Store)
   ├── Universal Recommender Engine (Apache Mahout / Correlated Cross-Occurrence)
   └── DialogFlow API v2 (Natural Language Understanding)

Ngăn xếp công nghệ chi tiết

  • Frontend: React.js 18.2, Material-UI, Socket.io-client 4.6.1, Axios 1.4.0.
  • Backend: Node.js 18.16 LTS, Express.js 4.18.2, Mongoose ODM 7.2.
  • Cơ sở dữ liệu: MongoDB 6.0 (Hỗ trợ sharding, replica set, lưu trữ linh hoạt dạng BSON).
  • Hệ thống gợi ý: Universal Recommender (Ứng dụng giải thuật CCO - Correlated Cross-Occurrence phân tích tương tác đa chiều).
  • Giao tiếp Real-time: Socket.IO kết hợp WebRTC peer-to-peer signalling.

Thiết kế cơ sở dữ liệu (MongoDB Schemas)

Dữ liệu được tổ chức thành 18 collection chính. Dưới đây là lược đồ thực thể cốt lõi:

// Schemas logic trích xuất từ mã nguồn hệ thống
const UserSchema = new mongoose.Schema({
  username: { type: String, required: true, unique: true, index: true },
  email: { type: String, required: true, unique: true },
  password: { type: String, required: true },
  role: { type: String, enum: ['ADMIN', 'ENTERPRISE', 'USER'], default: 'USER' },
  profile: {
    fullName: String,
    avatarUrl: String,
    bio: String,
    followers: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }],
    following: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }]
  },
  travelInterests: [String],
  balance: { type: Number, default: 0 }
}, { timestamps: true });

const PostSchema = new mongoose.Schema({
  author: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true, index: true },
  content: { type: String, required: true },
  media: [{ url: String, mediaType: { type: String, enum: ['IMAGE', 'VIDEO'] } }],
  location: {
    locationName: String,
    coordinates: { lat: Number, lng: Number }
  },
  taggedFriends: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }],
  likes: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }],
  commentsCount: { type: Number, default: 0 }
}, { timestamps: true });

Thiết kế API RESTful

Hệ thống cung cấp hệ thống endpoint chuẩn hóa:

  • POST /api/v1/auth/login: Xác thực tài khoản, trả về JWT Token (Payload: userId, role).
  • GET /api/v1/posts/feed?page=1&limit=20: Lấy danh sách bảng tin tối ưu theo thuật toán gợi ý.
  • POST /api/v1/packages/purchase: Xử lý giao dịch mua gói dịch vụ du lịch của doanh nghiệp.
  • GET /api/v1/recommendations/destinations: Nhận danh sách địa điểm đề xuất cá nhân hóa.

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển phần mềm kết hợp (Hybrid Process):

  1. Giai đoạn 1 (Agile - Scrum): Áp dụng trong 4 Sprint đầu (mỗi Sprint 2 tuần). Giúp đội ngũ linh hoạt nghiên cứu tích hợp thuật toán Universal Recommender và kiểm chứng kiến trúc MERN Stack khi các yêu cầu kỹ thuật còn biến động.
  2. Giai đoạn 2 (Waterfall - Thác nước): Chuyển đổi trong 6 tuần cuối khi danh sách tính năng đã đóng băng. Tập trung hoàn thiện giao diện, chuẩn hóa 18 collection CSDL, tối ưu hóa bảo mật và kiểm thử diện rộng nhằm đảm bảo tiến độ bảo vệ khóa luận.

Implementation và kết quả

Quy trình phát triển và thuật toán cốt lõi

Quy trình phát triển chia làm các phân đoạn rõ ràng:

  • Sprint 1 - 2: Thiết kế kiến trúc, khởi tạo Base Source MERN, cấu hình MongoDB Replica Set, xây dựng module Auth & RBAC.
  • Sprint 3 - 4: Xây dựng module Bảng tin (Post, Comment, Like), Quản lý quan hệ Bạn bè/Nhóm và tích hợp Socket.IO.
  • Sprint 5 - 6: Tích hợp Engine khuyến nghị Universal Recommender, WebRTC video calling và Module Doanh nghiệp (E-commerce tour package, nạp tiền).

Xử lý giao tiếp thời gian thực với Socket.IO

Module Chat và Video Call sử dụng Socket.IO để chuyển tiếp tin nhắn và thiết lập phiên đàm phán tín hiệu WebRTC (Signaling):

// Trích xuất cấu hình xử lý sự kiện Socket.IO trên máy chủ Node.js
io.on('connection', (socket) => {
  socket.on('join_chat', (conversationId) => {
    socket.join(conversationId);
  });

  socket.on('send_message', async (data) => {
    const { conversationId, senderId, content, mediaUrl } = data;
    const newMessage = await Message.create({ conversationId, senderId, content, mediaUrl });
    io.to(conversationId).emit('receive_message', newMessage);
  });

  // Signaling phục vụ Video Call qua WebRTC
  socket.on('call_user', ({ userToCall, signalData, from }) => {
    io.to(userToCall).emit('call_incoming', { signal: signalData, from });
  });

  socket.on('accept_call', (data) => {
    io.to(data.to).emit('call_accepted', data.signal);
  });
});

Pipeline gợi ý điểm đến dựa trên tương tác

Hệ thống tính toán ma trận tương tác giữa người dùng và địa điểm ($U \times L$) dựa trên trọng số hành vi: Check-in ($w=5$), Đăng bài ($w=4$), Thích ($w=2$), Xem ($w=1$).

// Pipeline tổng hợp dữ liệu hành vi phục vụ Universal Recommender
async function calculateLocationAffinity(userId) {
  return await Post.aggregate([
    { $match: { author: new mongoose.Types.ObjectId(userId) } },
    { $group: {
        _id: "$location.locationName",
        totalScore: { $sum: { $add: [ 4, { $size: "$likes" } ] } },
        interactions: { $sum: 1 }
      }
    },
    { $sort: { totalScore: -1 } },
    { $limit: 10 }
  ]);
}

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ử tải (Load Test) với công cụ k6 và Apache JMeter.

                  BIỂU ĐỒ ĐÁNH GIÁ ĐỘ TRỄ HỆ THỐNG
   Latency (ms)
    250 |                                    
    200 |                   [Ngưỡng tối đa 200ms]
    150 |            ┌──────────┐            
    100 |  ┌─────────┤          ├──────────┐ 
     50 |  │         │          │          │ 
      0 └──┴─────────┴──────────┴──────────┴────
          REST API   Database   Socket.IO
          (142ms)    Query(38ms) Latency(28ms)
  • Độ bao phủ mã nguồn (Test Coverage): Đạt 84% trên toàn bộ các controller nghiệp vụ chính.
  • Hiệu năng REST API: Thời gian phản hồi trung bình cho tác vụ đọc bảng tin là $142\text{ ms}$; tác vụ ghi bài viết là $188\text{ ms}$.
  • Hiệu năng WebSocket: Xử lý ổn định 5.000 thông điệp/giây với độ trễ chuyển tiếp $28\text{ ms}$.
  • Tỷ lệ khắc phục lỗi: 96,2% lỗi (Bug tracking) ghi nhận trong giai đoạn UAT được xử lý triệt để trước khi nghiệm thu.

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

Hệ thống đã hiện thực hóa 100% các tính năng đăng ký theo đề cương khóa luận:

  • Phân hệ Admin hoàn chỉnh với dashboard biểu đồ đường/cột thống kê người dùng, dòng tiền và doanh thu gói dịch vụ.
  • Phân hệ Doanh nghiệp cho phép nạp tiền qua tài khoản, tạo và quản lý cửa hàng du lịch, bán các gói dịch vụ lữ hành.
  • Phân hệ Người dùng đầy đủ tính năng mạng xã hội: Đăng bài gắn tọa độ/tag bạn bè, tạo cuộc gọi video P2P, thành lập hội nhóm du lịch và nhận gợi ý thông minh từ Universal Recommender.
  • Điểm đánh giá mức độ hài lòng người dùng (System Usability Scale - SUS) đạt 82.5/100 điểm (Mức Excellent).

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

  1. Hệ thống khuyến nghị lai ghép chuyên sâu cho du lịch: Khác với hệ thống gợi ý của mạng xã hội tổng quát (tập trung vào mức độ viral), mô hình áp dụng The Universal Recommender trong đề tài giải quyết triệt để vấn đề "Cold-Start" cho người dùng mới thông qua việc phân tích sở thích ban đầu kết hợp lịch sử hành trình không gian địa lý.
  2. Cơ chế hội tụ B2B2C hoàn chỉnh: Kết nối trực tiếp người dùng cá nhân có nhu cầu du lịch với các doanh nghiệp cung cấp dịch vụ địa phương trên cùng một nền tảng xã hội, giảm thiểu 35% thời gian tìm kiếm và lên lịch trình so với việc sử dụng song song Facebook và Traveloka.
  3. Kiến trúc dữ liệu NoSQL tối ưu hóa cho nội dung tương tác: Tận dụng triệt để định dạng BSON của MongoDB để thiết kế cấu trúc document đa tầng, giảm tải 45% số lượng truy vấn $O(N)$ so với việc ánh xạ bảng quan hệ SQL truyền thống trên các bài đăng giàu siêu dữ liệu (Metadata, Geo-coordinates, Media tags).

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

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

  • Cộng đồng lữ hành tự túc: Một nhóm phượt thủ có thể tạo nhóm riêng trên nền tảng, cùng thảo luận qua video call, gắn tọa độ các điểm check-in thực tế và chia sẻ bài đánh giá khách quan đến cộng đồng.
  • Doanh nghiệp lữ hành vừa và nhỏ: Tiếp cận tệp khách hàng mục tiêu bằng cách phát hành các gói tour ưu đãi trực tiếp trong tab "Cửa hàng du lịch", theo dõi biến động doanh thu theo thời gian thực trên giao diện quản trị doanh nghiệp.
       +-------------------------------------------------------------+
       |               QUY TRÌNH DEPLOY HỆ THỐNG                     |
       +-------------------------------------------------------------+
                                      │
       ▼                              ▼                              ▼
+--------------+              +---------------+              +---------------+
| DOCKER BUILD | ─── Push ──> | NGINX REVERSE | ── Proxy ──> | PM2 NODE.JS   |
| (Client SPA) |              | PROXY (SSL)   |              | CLUSTER       |
+--------------+              +---------------+              +---------------+
                                                                     │
                                                                     ▼
                                                             +---------------+
                                                             | MONGODB ATLAS |
                                                             | (Replica Set) |
                                                             +---------------+

Hướng dẫn triển khai và vận hành hệ thống

1. Yêu cầu phần cứng & môi trường

  • Hệ điều hành: Ubuntu 20.04/22.04 LTS hoặc Linux CentOS 8.
  • Cấu hình tối thiểu: 2 vCPU, 4GB RAM, 40GB SSD Storage.
  • Môi trường phần mềm: Node.js >= 18.16.0, MongoDB >= 6.0.0, Nginx >= 1.18.

2. Các bước triển khai (Deployment Instructions)

# 1. Clone source code từ repository
git clone https://github.com/uit-software-engineering/travel-social-network.git
cd travel-social-network

# 2. Cấu hình biến môi trường Backend
cd backend
cat <<EOF > .env
PORT=5000
MONGO_URI=mongodb://localhost:27017/travel_social_db
JWT_SECRET=UIT_SECRET_KEY_2023_TRAVEL_NET
CLIENT_URL=https://travelnetwork.uit.edu.vn
EOF

# 3. Cài đặt dependencies và chạy Backend với PM2
npm install --production
pm2 start server.js --name "travel-backend" -i max

# 4. Build giao diện Frontend
cd ../frontend
npm install
npm run build

# 5. Cấu hình Nginx reverse proxy và trỏ Document Root về thư mục build
sudo cp nginx.conf /etc/nginx/sites-available/travelnetwork
sudo ln -s /etc/nginx/sites-available/travelnetwork /etc/nginx/sites-enabled/
sudo systemctl restart nginx

3. Xử lý sự cố thường gặp (Troubleshooting Guide)

  • Lỗi ngắt kết nối WebSocket: Kiểm tra cấu hình UpgradeConnection headers trong file cấu hình Nginx (proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";).
  • MongoDB ghi chậm khi lượng truy cập tăng đột biến: Thiết lập chỉ mục (Indexes) cho các trường truy vấn thường xuyên: db.posts.createIndex({ author: 1, createdAt: -1 }).

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

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

  • Cơ sở dữ liệu MongoDB có thể gặp hiện tượng nghẽn tài nguyên ghi (Write locking) cục bộ khi số lượng tương tác đồng thời vượt quá 10.000 CCU mà chưa có tầng bộ nhớ đệm phân tán.
  • Tính năng cuộc gọi video WebRTC chưa tích hợp máy chủ TURN Server trung gian chuyên dụng, dẫn đến xác suất suy giảm chất lượng kết nối khi người dùng nằm sau các tầng tường lửa NAT đối xứng phức tạp.

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

  1. Tích hợp bộ đệm Redis Caching: Lưu trữ phiên làm việc (Session) và bảng tin bộ nhớ đệm nhằm giảm tải 60% truy vấn trực tiếp vào MongoDB.
  2. Nâng cấp AI với Generative AI (LLMs): Tích hợp trợ lý ảo lập lịch trình du lịch thông minh tự động (Automatic Itinerary Planner) theo ngân sách và số ngày du lịch của người dùng.
  3. Phát triển Native Mobile App: Sử dụng React Native hoặc Flutter để đồng bộ hệ sinh thái trên Android và iOS.

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

  • Sinh viên ngành Kỹ thuật Phần mềm / CNTT: Nguồn tài liệu tham khảo thực tế về quy trình phát triển sản phẩm hoàn chỉnh từ khâu thiết kế Use Case, Sequence Diagram đến hiện thực hóa kiến trúc MERN Stack và Machine Learning.
  • Kỹ sư và Lập trình viên Web: Mô hình mẫu về việc tích hợp Socket.IO và WebRTC trong ứng dụng mạng xã hội có lưu lượng cao, cách thiết kế REST API chuẩn mực cho hệ thống đa tác nhân.
  • Doanh nghiệp lữ hành & Khởi nghiệp du lịch: Bản thiết kế giải pháp công nghệ khả thi với chi phí triển khai tối ưu, mở ra cơ hội xây dựng các nền tảng thương mại kết hợp cộng đồng niche.
  • Cộng đồng nghiên cứu: Cung cấp cơ sở thực nghiệm về tính hiệu quả của The Universal Recommender khi ứng dụng vào bài toán gợi ý địa điểm du lịch cá nhân hóa.

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

1. Hệ thống yêu cầu cấu hình máy chủ như thế nào để vận hành ổn định?

Để phục vụ quy mô thử nghiệm 1.000 - 3.000 người dùng hoạt động đồng thời, hệ thống yêu cầu máy chủ Cloud VPS tối thiểu 2 vCPU, 4GB RAM, cài đặt Node.js 18 LTS và cơ sở dữ liệu MongoDB Atlas (M10 Cluster trở lên).

2. Khả năng mở rộng (Scalability) của nền tảng khi lượng người dùng tăng đột biến?

Kiến trúc hỗ trợ mở rộng theo chiều ngang (Scale-out) dễ dàng nhờ bản chất stateless của Node.js API (kết hợp PM2 Cluster / Docker Swarm) và khả năng phân mảnh (Sharding), sao lưu đa cụm (Replica Sets) tích hợp sẵn của MongoDB.

3. Hệ thống kết nối với các dịch vụ bên ngoài nào?

Hệ thống kết nối với Google Maps API phục vụ hiển thị tọa độ bản đồ, DialogFlow API xử lý ngôn ngữ tự nhiên cho Chatbot và giao thức WebRTC Signaling cho cuộc gọi trực tiếp peer-to-peer.

4. Chi phí vận hành và bảo trì ước tính hàng tháng là bao nhiêu?

Chi phí vận hành ban đầu rất tối ưu: máy chủ VPS ($20/tháng), MongoDB Atlas ($30/tháng), Domain & SSL (~$15/năm), tổng chi phí cơ sở hạ tầng giai đoạn MVP ước tính dưới 60 USD/tháng.

5. Dữ liệu cá nhân và lịch sử trò chuyện của người dùng được bảo mật ra sao?

Mật khẩu người dùng được mã hóa một chiều qua thuật toán Bcrypt với Salt rounds = 10. Toàn bộ các yêu cầu truyền tải dữ liệu đều đi qua giao thức bảo mật HTTPS/WSS và xác thực phiên qua JSON Web Token (JWT).


Kết luận

Đề tài khóa luận tốt nghiệp "Xây dựng mạng xã hội du lịch" của sinh viên Nguyễn Đức Chí Đạt và Hồ Quang Linh đã giải quyết thành công bài toán kết nối cộng đồng lữ hành và thương mại hóa dịch vụ du lịch bằng giải pháp công nghệ hiện đại. Việc áp dụng thành công kiến trúc MERN Stack, giao tiếp thời gian thực Socket.IO và giải thuật gợi ý thông minh Universal Recommender khẳng định năng lực ứng dụng chuyên sâu của sinh viên ngành Kỹ thuật Phần mềm - Trường Đại học Công nghệ Thông tin (ĐHQG-HCM). Dự án sở hữu tiềm năng thương mại hóa cao, mở ra hướng đi bền vững cho các nền tảng số hóa ngành du lịch Việt Nam trong kỷ nguyên công nghệ 4.0.