Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh công nghệ thông tin và mạng xã hội phát triển mạnh mẽ trên thế giới cũng như tại Việt Nam, các nền tảng trực tuyến đã trở thành công cụ quan trọng để doanh nghiệp quảng bá sản phẩm, dịch vụ và gia tăng nhận diện thương hiệu. Đặc biệt, nhiều đơn vị trong ngành dịch vụ du lịch đã bắt đầu khai thác tiềm năng của mạng xã hội để tiếp cận gần hơn với du khách. Tuy nhiên, theo ghi nhận của Diễn đàn Kinh tế Thế giới (WEF), du lịch là một trong những lĩnh vực chịu thiệt hại nặng nề nhất trong năm 2020 do tác động của đại dịch Covid-19. Nhằm thúc đẩy sự phục hồi của ngành du lịch sau đại dịch, đồng thời đáp ứng nhu cầu kết nối nguồn thông tin điểm đến tin cậy và gắn kết cộng đồng yêu thích trải nghiệm xê dịch, đề tài "Xây dựng website cộng đồng chia sẻ trải nghiệm du lịch và điểm đến" đã được lựa chọn thực hiện dưới dạng khóa luận tốt nghiệp chuyên ngành Công nghệ phần mềm, Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.

Mục tiêu và nhiệm vụ nghiên cứu của đề tài được phân định cụ thể thành hai nhóm nhiệm vụ chính:

  1. Nhiệm vụ nghiên cứu lý thuyết:
  • Tìm hiểu các công nghệ và thư viện xây dựng giao diện người dùng: ReactJS, NextJS, Redux, Redux Toolkit, React Query, ChakraUI, Axios.
  • Tìm hiểu các công nghệ xây dựng tầng dịch vụ phụ trợ: Java Spring Boot và hệ sinh thái Spring Framework (Spring MVC, Spring Data, Spring Security, Spring Cloud).
  • Tìm hiểu các giải pháp giao tiếp thời gian thực và quản lý hàng đợi thông điệp: Socket.io, STOMP, Message Broker.
  • Nghiên cứu cơ chế xác thực và ủy quyền người dùng: JSON Web Token (JWT) và dịch vụ quản lý nhận dạng đám mây.
  • Nghiên cứu các dịch vụ đám mây từ Amazon Web Services (AWS) phục vụ lưu trữ, gửi thư và quản trị hệ thống.
  1. Nhiệm vụ thực hành và xây dựng sản phẩm:
  • Về phía người dùng (User): Cung cấp chức năng đăng ký, đăng nhập qua email và mật khẩu; xem và tìm kiếm các bài viết chia sẻ trải nghiệm, bài viết hỏi đáp, bạn bè và địa điểm du lịch; tương tác với bài viết thông qua biểu cảm và bình luận; quản lý trang cá nhân, kho hình ảnh và danh sách bạn bè; khám phá địa điểm du lịch thông qua hashtag và đóng góp địa điểm mới cho cộng đồng; khởi tạo hành trình du lịch chi tiết và tìm kiếm người đồng hành chuyến đi.
  • Về phía quản trị viên (Administrator): Cung cấp các công cụ quản lý tài khoản, quản lý người dùng; quản lý danh mục địa điểm, khu vực và kiểm duyệt các bài đóng góp địa điểm từ cộng đồng; thực hiện thống kê, báo cáo về lưu lượng người dùng và dữ liệu địa điểm trong hệ thống.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Quy trình và nhu cầu thực tế của người dùng khi tham gia mạng xã hội du lịch (chia sẻ trải nghiệm, giải đáp thắc mắc, tìm bạn đồng hành, tìm kiếm địa điểm); các kỹ thuật và công nghệ hiện đại phục vụ phát triển ứng dụng web Full-stack (Spring Boot, NextJS, MySQL, Docker, các dịch vụ AWS).
  • Phạm vi nghiên cứu: Đề tài giới hạn trong việc xây dựng một hệ thống website kết hợp giữa các tính năng của mạng xã hội thông thường và các phân hệ đặc thù cho du lịch (quản lý lịch trình, đóng góp địa điểm, tìm kiếm bạn đồng hành). Thời gian thực hiện đồ án diễn ra từ ngày 27/02/2023 đến ngày 10/07/2023 tại Thành phố Hồ Chí Minh.

Cơ sở lý thuyết và phương pháp

Khóa luận thiết lập nền tảng kỹ thuật dựa trên các công nghệ và khung kiến trúc phần mềm tiêu chuẩn cho hệ thống web phân tầng độc lập:

  1. Công nghệ phía Front-end:
  • NextJS: Khung phát triển ứng dụng React theo tư tưởng Isomorphic, hỗ trợ cơ chế hiển thị phía máy chủ (Server Side Rendering - SSR), tạo trang tĩnh (Static Site Generation - SSG) và ứng dụng đơn trang (Single Page Application - SPA), giúp tối ưu hóa hiệu năng và nâng cao khả năng tối ưu hóa công cụ tìm kiếm (SEO).
  • Redux và Redux Toolkit: Thư viện quản lý trạng thái tập trung của ứng dụng, hỗ trợ chuẩn hóa cấu trúc lưu trữ và nâng cao tính dự đoán của luồng dữ liệu.
  • React Query: Giải pháp chuyên biệt xử lý trạng thái phía máy chủ (server state) và cơ chế bộ nhớ đệm (caching), giúp đơn giản hóa việc nạp, đồng bộ hóa và cập nhật dữ liệu từ API so với phương thức truyền thống của Redux.
  • Các thư viện hỗ trợ giao diện và biểu mẫu: ChakraUI cung cấp hệ thống thành phần giao diện người dùng tùy biến; Axios xử lý các yêu cầu HTTP dựa trên Javascript Promise; React-hook-form kết hợp cùng thư viện Yup để quản lý và kiểm tra tính hợp lệ của dữ liệu biểu mẫu.
  1. Công nghệ phía Back-end và Cơ sở dữ liệu:
  • Java Spring Boot: Mô-đun thuộc Spring Framework áp dụng nguyên lý phát triển ứng dụng nhanh (RAD), tích hợp sẵn các máy chủ nhúng như Tomcat, Jetty, Undertow và cấu hình mặc định để tối ưu hóa việc xây dựng các RESTful API. Hệ thống liên kết chặt chẽ với Spring MVC, Spring Data và Spring Security.
  • MySQL: Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) hoạt động theo mô hình client-server, chịu trách nhiệm lưu trữ cấu trúc bảng và quản lý mối liên hệ giữa các thực thể dữ liệu của toàn bộ nền tảng.
  • Docker: Nền tảng ảo hóa cấp hệ điều hành dạng container, cho phép đóng gói toàn bộ mã nguồn ứng dụng và môi trường phụ thuộc, hỗ trợ quá trình triển khai nhanh chóng và đồng nhất.
  1. Dịch vụ đám mây tích hợp (AWS) và Giám sát:
  • Amazon Simple Email Service (SES): API hỗ trợ gửi thư điện tử kích hoạt tài khoản và khôi phục mật khẩu thông qua tên miền đăng ký với định dạng nội dung HTML.
  • Amazon Simple Storage Service (S3): Dịch vụ lưu trữ đối tượng đám mây có độ bền cao, dùng để lưu trữ toàn bộ tệp tin hình ảnh bài đăng và tư liệu của hệ thống.
  • Amazon Cognito: Dịch vụ xác thực và phân quyền truy cập thông qua cơ chế User Pool và Identity Pool, kiểm soát quyền truy cập tài nguyên AWS từ phía máy chủ.
  • Amazon MQ: Dịch vụ điều phối hàng đợi thông điệp (Message Broker) trên nền tảng đám mây, tối ưu hóa giao tiếp trung gian giữa các thành phần ứng dụng.
  • Grafana: Nền tảng nguồn mở phục vụ giám sát và hiển thị trực quan các chỉ số kỹ thuật theo chuỗi thời gian thực.

Phương pháp nghiên cứu thực tế bao gồm phương pháp khảo sát hiện trạng các nền tảng mạng xã hội du lịch trong và ngoài nước; phương pháp phân tích và thiết kế hệ thống hướng đối tượng thông qua mô hình hóa Use Case và Sequence Diagram; phương pháp thiết kế cơ sở dữ liệu quan hệ (ERD); cùng phương pháp thực nghiệm lập trình, đóng gói và kiểm thử phần mềm trên môi trường phát triển tích hợp IntelliJ IDEA.

Khảo sát hiện trạng các hệ thống tương tự

Trong Chương 2, nhóm nghiên cứu đã tiến hành khảo sát và phân tích ưu, nhược điểm của 5 website hoạt động trong lĩnh vực hỗ trợ du lịch và kết nối cộng đồng:

Tên hệ thống Các chức năng chính Ưu điểm ghi nhận Nhược điểm ghi nhận
Hahalolo Đăng bài viết chia sẻ, tương tác biểu cảm, bình luận; đăng bài trải nghiệm ẩm thực/địa điểm; hiển thị tour, khách sạn, vé máy bay; tích hợp giỏ hàng thương mại điện tử; hệ thống thanh toán riêng; tính năng tặng điểm (donate). Chức năng đa dạng; giao diện thân thiện, bố cục rõ ràng; tích hợp tiện lợi nhiều dịch vụ đặt phòng, vé trên cùng nền tảng. Quá nhiều chức năng không tập trung vào bản chất du lịch; tính năng mạng xã hội thuần túy bị hạn chế, chủ yếu thiên về đặt tour và mua sắm.
Gody.vn Cung cấp thông tin kinh nghiệm du lịch tự túc; hỗ trợ đặt phòng khách sạn, vé máy bay, vé tham quan; lập kế hoạch lịch trình; tính năng "My Travel Map" ghi lại hành trình; blog chia sẻ hình ảnh và sự cố chuyến đi. Phân mục chuyên môn hóa cao, thuận tiện tìm kiếm; có tính năng giải đáp thắc mắc và ưu đãi cho thành viên; đa dạng tiện ích tham khảo. Bố cục giao diện (UI) chưa thực sự hợp lý, dễ gây rối cho người dùng mới; tính chất trang web vẫn thiên về dịch vụ đặt chỗ (booking) hơn mạng xã hội.
GAFFL Tìm đối tác đồng hành du lịch đáng tin cậy; tìm kiếm địa điểm và kết nối người có chung điểm đến; tra cứu tuyến đường và dân địa phương; trò chuyện trực tiếp giữa các tài khoản đã xác minh. Dễ thao tác; cung cấp nhiều tiêu chí lựa chọn bạn đồng hành phù hợp. Chưa hoàn thiện đầy đủ các chức năng tương tác của một mạng xã hội du lịch tiêu chuẩn.
Couchsurfing Đăng ký ở nhờ nhà người bản địa trong chuyến đi; tương tác với chủ nhà để lập kế hoạch; tạo sự kiện, chuyến đi chung để gặp gỡ cộng đồng địa phương. Tăng cường kết nối văn hóa bản địa chân thực; tạo cảm giác an toàn cho thành viên; hỗ trợ tổ chức sự kiện ngoại khóa (cắm trại, thể thao). Khía cạnh mạng xã hội chia sẻ nội dung còn hạn chế; mô hình vận hành và quản lý thực tế gặp nhiều phức tạp.
TripGiraffe Khởi tạo chuyến đi; tìm kiếm đồng đội tham gia du lịch cùng; kết bạn và gửi tin nhắn trực tiếp giữa các thành viên. Ý tưởng tìm bạn đồng hành thực tế; thao tác cơ bản tương đối thân thiện. Thông tin chuyến đi chưa chi tiết; giao diện người dùng chưa thẩm mỹ; thiếu hụt các chức năng tương tác cốt lõi của mạng xã hội.

Nội dung chính theo từng chương

Chương 1: Cơ sở lý thuyết

Chương này tập trung trình bày tổng quan lý thuyết của các công cụ và nền tảng công nghệ được áp dụng trong toàn bộ dự án. Về tầng Front-end, tác giả phân tích cơ chế hoạt động của NextJS (Isomorphic, SSR, SSG), cấu trúc quản lý trạng thái của Redux kết hợp Redux Toolkit, cùng những ưu điểm của React Query trong việc giảm thiểu cấu trúc mã nguồn phức tạp (boilerplate) khi xử lý server state. Các thư viện ChakraUI, Axios, React-hook-form và Yup cũng được thuyết minh cụ thể về vai trò định hình giao diện và xử lý biểu mẫu. Về tầng Back-end, chương nghiên cứu cấu trúc của Java Spring Boot, các lợi ích của máy chủ nhúng và khả năng tích hợp mô-đun dữ liệu, đồng thời phân tích tính năng của hệ quản trị MySQL cùng nền tảng Docker. Chương 1 cũng giới thiệu chi tiết 4 dịch vụ đám mây AWS (SES, S3, Cognito, MQ) cùng hệ thống theo dõi Grafana.

Chương 2: Khảo sát hiện trạng

Nội dung chương 2 dành cho việc khảo sát thực tế 5 hệ thống trực tuyến liên quan đến du lịch (Hahalolo, Gody.vn, GAFFL, Couchsurfing, TripGiraffe), làm rõ những hạn chế về mặt trải nghiệm người dùng và việc mất cân bằng giữa tính năng mạng xã hội với tính năng thương mại điện tử. Từ kết quả khảo sát, chương tiến hành xác định các yêu cầu của hệ thống đề xuất:

  • Yêu cầu chức năng: Lưu trữ (thông tin người dùng, phân quyền, bài đăng "Trải nghiệm", bài đăng "Hỏi đáp", tương tác cảm xúc, bình luận, điểm đến, bạn bè); Quản lý (khu vực, địa điểm khám phá, hành trình, tài khoản người dùng, danh sách bài đăng); Tìm kiếm/tra cứu (theo tên người dùng, địa điểm, bài đăng); Thống kê (số lượng người dùng, danh sách địa điểm).
  • Yêu cầu phi chức năng: Tốc độ phản hồi nhanh, tra cứu chính xác, bảo mật dữ liệu, quản trị tiện lợi và giao diện đơn giản, trực quan.
  • Kiến trúc chung: Thiết lập sơ đồ kiến trúc tổng thể dựa trên sự kết hợp giữa React và Spring Boot.

Chương 3: Phân tích thiết kế hệ thống

Chương 3 là phần trọng tâm trong quy trình kỹ thuật phần mềm của khóa luận:

  • Mô hình hóa Use Case: Phân tách rõ ràng giữa tác nhân Khách ẩn danh (Guest), Người dùng đã đăng nhập (User) và Quản trị viên (Administrator). Từng ca sử dụng được mô tả cụ thể về mã hiệu, tiền điều kiện, hậu điều kiện, luồng sự kiện cơ bản, luồng thay thế và luồng ngoại lệ.
  • Lược đồ tuần tự (Sequence Diagram): Xây dựng biểu đồ tương tác chi tiết cho hàng loạt chức năng trọng yếu gồm Đăng nhập, Điền thông tin lần đầu, Thay đổi cảm xúc, Thay đổi trạng thái bạn bè, Bình luận, Đăng bài, Xóa bài, Quên mật khẩu, Tìm kiếm, Nhắn tin, Cập nhật thông tin cá nhân, Đề xuất kết bạn, Đóng góp địa điểm, Tạo hành trình, Quản lý khu vực và duyệt đóng góp phía Quản trị viên.
  • Thiết kế cơ sở dữ liệu: Xác lập lược đồ thực thể kết hợp (ERD) hoàn chỉnh và mô tả cấu trúc chi tiết của 18 bảng dữ liệu quan hệ lưu trữ thông tin hệ thống.
  • Thiết kế giao diện: Xây dựng chi tiết hệ thống màn hình cho cả hai phân hệ Người dùng và Quản trị viên, từ thanh điều hướng, các trang dòng thời gian, trang cá nhân, trang hành trình cho đến các giao diện duyệt bài và quản lý hệ thống.

Chương 4: Cài đặt và kiểm thử

Chương này trình bày môi trường kỹ thuật triển khai dự án, bao gồm cấu hình trên công cụ IntelliJ IDEA, các bước thiết lập mã nguồn, cũng như các kịch bản kiểm thử chức năng (Functional Testing). Nhóm thực hiện lập bảng kiểm thử chi tiết nhằm xác minh hoạt động của toàn bộ các ca sử dụng đã thiết kế trên cả hai giao diện Người dùng và Quản trị viên, ghi nhận kết quả phản hồi của từng trường hợp kiểm thử để đảm bảo tính đúng đắn trước khi nghiệm thu.

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình kiến trúc phân tầng độc lập giữa Front-end và Back-end thông qua các giao diện lập trình ứng dụng RESTful API:

  1. Kiến trúc phân tầng và bảo mật:
  • Tầng giao diện (Front-end): Xây dựng bằng NextJS kết hợp ChakraUI, tận dụng cơ chế Server Side Rendering nhằm tối ưu hóa khả năng hiển thị và lập chỉ mục tìm kiếm. Tầng này kết hợp Redux Toolkit để quản lý trạng thái giao diện cục bộ và React Query để xử lý bộ nhớ đệm các yêu cầu dữ liệu từ máy chủ.
  • Tầng dịch vụ (Back-end): Khởi tạo bằng Java Spring Boot, đóng vai trò cung cấp toàn bộ các đầu mút API phục vụ nghiệp vụ. Việc tích hợp thư viện của bên thứ ba được bọc (wrapper) thành các dịch vụ độc lập bên trong Spring Boot nhằm tránh phụ thuộc chặt chẽ vào mã nguồn, tạo điều kiện thuận lợi cho việc bảo trì và nâng cấp.
  • Cơ chế xác thực và phiên làm việc: Sử dụng chuẩn mã hóa JSON Web Token (JWT) kết hợp với dịch vụ quản lý danh tính Amazon Cognito (User Pool và Identity Pool) để kiểm soát quyền truy cập của các nhóm người dùng và quản trị viên tới hệ thống cũng như tài nguyên đám mây AWS.
  • Xử lý tương tác thời gian thực: Hệ thống ứng dụng giao thức STOMP, Socket.io cùng dịch vụ message broker Amazon MQ để chuyển tiếp các thông điệp trò chuyện trực tiếp giữa bạn bè và cập nhật thông báo tức thời.
  1. Cấu trúc cơ sở dữ liệu hệ thống: Dữ liệu được tổ chức chặt chẽ trên MySQL thông qua 18 bảng thực thể quan hệ, bao gồm:
Tên bảng dữ liệu Mục đích và nội dung lưu trữ
Users Thông tin tài khoản, hồ sơ cá nhân và quyền hạn người dùng.
Posts Thông tin các bài đăng dạng "Trải nghiệm" hoặc "Hỏi đáp".
Post_images Danh sách các tệp hình ảnh đính kèm theo từng bài viết.
Comments Dữ liệu các bình luận của người dùng trên các bài đăng.
Friends Danh sách liên kết bạn bè và trạng thái quan hệ giữa các tài khoản.
Hashtags Các từ khóa đánh dấu để phân loại và tổng hợp bài viết du lịch.
Places Thông tin chi tiết về các địa điểm tham quan, du lịch, ăn uống.
Place_categories Phân loại các nhóm địa điểm trong hệ thống.
Areas Dữ liệu định danh các vùng, khu vực địa lý.
Chat_rooms Thông tin các phòng trò chuyện trực tuyến.
Chat_room_members Danh sách các thành viên tham gia trong từng phòng chat.
Messengers Nội dung các tin nhắn văn bản trao đổi giữa các người dùng.
Notifications Thông báo hệ thống gửi đến từng tài khoản người dùng.
Trip_days Lịch trình phân chia theo từng ngày của một chuyến đi cụ thể.
Trip_places Danh sách các điểm đến được sắp xếp trong từng ngày hành trình.
Trip_place_fees Chi phí dự kiến hoặc thực tế tại từng địa điểm trong chuyến đi.
Trip_members Danh sách thành viên tham gia hoặc gửi yêu cầu tham gia hành trình.
Trip_reviews Nhận xét và đánh giá của thành viên sau khi tham gia chuyến đi.
  1. Quy trình kiểm thử hệ thống: Nhóm tác giả tiến hành kiểm thử hộp đen tập trung vào kiểm thử chức năng (Functional Testing) dựa trên kế hoạch và các ca kiểm thử đã xây dựng trong Chương 4. Toàn bộ các luồng thao tác của người dùng ẩn danh (tìm kiếm, đăng ký), người dùng đã đăng nhập (đăng bài có kiểm tra ảnh, bình luận, sửa/xóa bài, tương tác biểu cảm, gửi tin nhắn, tạo hành trình, duyệt thành viên tham gia) và các luồng quản trị (tạo khu vực, thêm/sửa loại địa điểm, duyệt bài đóng góp, xóa người dùng) đều được thực thi và đối chiếu với kết quả mong đợi.

Kết quả và đóng góp

  1. Kết quả chính của đề tài:
  • Xây dựng hoàn chỉnh nền tảng website cộng đồng du lịch với đầy đủ giao diện người dùng và hệ thống quản trị nội dung.
  • Hiện thực hóa toàn bộ các dịch vụ RESTful API bằng Java Spring Boot và lưu trữ dữ liệu an toàn trên hệ thống 18 bảng của MySQL.
  • Tích hợp thành công các dịch vụ điện toán đám mây của Amazon Web Services (AWS) vào hệ thống thực tế: sử dụng Amazon SES để gửi mã xác thực email và đặt lại mật khẩu; sử dụng Amazon S3 để lưu trữ hình ảnh; sử dụng Amazon Cognito để phân quyền và quản lý tài khoản; ứng dụng Amazon MQ trong việc trung chuyển thông điệp.
  • Cung cấp hai luồng nội dung bài đăng chuyên biệt: bài đăng "Trải nghiệm" (bắt buộc đính kèm tối thiểu một hình ảnh minh thực) và bài đăng "Hỏi đáp" (cho phép cộng đồng cùng giải đáp thắc mắc du lịch).
  • Xây dựng thành công tính năng khởi tạo kế hoạch hành trình chi tiết (tính toán chi phí, phân chia theo ngày) gắn liền với cơ chế gửi và phê duyệt yêu cầu tham gia để tìm bạn đồng hành.
  1. Giải pháp kỹ thuật tác giả đề xuất:
  • Áp dụng kiến trúc tầng dịch vụ độc lập (wrapper services) trong Spring Boot đối với các API bên thứ ba, giúp cô lập mã nguồn và dễ dàng hoán chuyển hoặc nâng cấp các dịch vụ đám mây mà không ảnh hưởng tới logic nghiệp vụ cốt lõi.
  • Kết hợp song song Redux Toolkit và React Query ở phía Front-end nhằm phân định rõ ràng giữa việc quản lý trạng thái cục bộ của giao diện và cơ chế đồng bộ, đệm dữ liệu từ máy chủ, giúp cải thiện tốc độ phản hồi và độ ổn định của ứng dụng.
  1. Đóng góp so với các nền tảng khảo sát: Khóa luận đã khắc phục những điểm hạn chế từ các hệ thống hiện tại thông qua việc loại bỏ các phân hệ mua bán, sàn thương mại điện tử phức tạp (vốn chiếm ưu thế trên Hahalolo hay Gody.vn) để tập trung vào mục tiêu cốt lõi: kết nối cộng đồng, chia sẻ hình ảnh thực tế và hỗ trợ lập kế hoạch chuyến đi. Đồng thời, nền tảng bổ sung đầy đủ các tính năng tương tác mạng xã hội chuẩn mực (bình luận, thả cảm xúc, kết bạn, nhắn tin) mà các nền tảng thuần về tìm bạn đồng hành như GAFFL hay TripGiraffe còn thiếu sót.

Hạn chế và hướng nghiên cứu tiếp

Khóa luận tự xác định một số hạn chế và định hướng phát triển cụ thể như sau:

  • Nhược điểm và hạn chế: Dung lượng triển khai của Spring Boot còn tương đối lớn do chứa nhiều phụ thuộc mặc định; hiệu năng truy xuất của cơ sở dữ liệu MySQL sẽ gặp khó khăn khi quy mô dữ liệu bản ghi gia tăng đột biến; một số tính năng mở rộng của nền tảng mạng xã hội và các tùy biến chuyên sâu về quản trị hệ thống vẫn cần hoàn thiện thêm để đáp ứng tải thực tế lớn hơn.
  • Hướng phát triển tiếp theo: Nghiên cứu tối ưu hóa cấu trúc cơ sở dữ liệu và triển khai các giải pháp bộ nhớ đệm phân tán; phát triển thêm ứng dụng trên nền tảng thiết bị di động (Mobile App); mở rộng các thuật toán thông minh để nâng cao độ chính xác của tính năng đề xuất bạn bè và gợi ý địa điểm du lịch tự động dựa trên sở thích cá nhân của người dùng.

Giá trị tham khảo

Đề tài là tài liệu tham khảo có giá trị chuyên môn cao dành cho sinh viên và các nhóm nghiên cứu thuộc chuyên ngành Công nghệ thông tin, Kỹ thuật phần mềm và Hệ thống thông tin:

  • Cung cấp tài liệu tham khảo chi tiết về quy trình phân tích và thiết kế một ứng dụng mạng xã hội hoàn chỉnh từ việc mô hình hóa yêu cầu, đặc tả các ca sử dụng (bao gồm đầy đủ luồng cơ bản, thay thế, ngoại lệ) cho đến thiết kế lược đồ tuần tự.
  • Cung cấp mô hình thiết kế cơ sở dữ liệu quan hệ chuẩn hóa gồm 18 bảng cho bài toán tích hợp mạng xã hội và quản lý lịch trình du lịch.
  • Là tài liệu hướng dẫn thực tế về việc kết hợp công nghệ Front-end hiện đại (NextJS, React Query, ChakraUI) với Back-end doanh nghiệp (Java Spring Boot, Docker) và quy trình tích hợp các dịch vụ đám mây AWS (Cognito, S3, SES, MQ) vào một hệ thống phần mềm ứng dụng.

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

  1. Khóa luận sử dụng các dịch vụ đám mây nào của Amazon Web Services (AWS) và vai trò cụ thể của chúng trong hệ thống là gì? Nhóm tác giả đã tích hợp 4 dịch vụ AWS chính: Amazon SES chịu trách nhiệm gửi email xác thực tài khoản và gửi mã khôi phục mật khẩu; Amazon S3 lưu trữ các tệp tin hình ảnh bài đăng và tư liệu điểm đến; Amazon Cognito đảm nhận việc quản lý, xác thực danh tính người dùng và cấp quyền truy cập tài nguyên đám mây; Amazon MQ đóng vai trò là message broker trung chuyển thông điệp cho tính năng giao tiếp thời gian thực.

  2. Cấu trúc cơ sở dữ liệu của hệ thống bao gồm bao nhiêu bảng và phân bổ cho những phân hệ chính nào? Hệ thống sử dụng cơ sở dữ liệu MySQL gồm 18 bảng dữ liệu: phân hệ tài khoản và tương tác mạng xã hội (Users, Friends, Posts, Post_images, Comments, Hashtags, Notifications); phân hệ trò chuyện (Chat_rooms, Chat_room_members, Messengers); phân hệ quản lý điểm đến (Areas, Place_categories, Places); và phân hệ lịch trình chuyến đi (Trip_days, Trip_places, Trip_place_fees, Trip_members, Trip_reviews).

  3. Trong ca sử dụng "Tạo bài đăng" (UC-2.4), luồng ngoại lệ nào được hệ thống kiểm tra đối với bài đăng loại "Trải nghiệm"? Theo đặc tả của Use case UC-2.4, khi người dùng thực hiện tạo bài đăng thuộc phân loại "Trải nghiệm", hệ thống bắt buộc bài đăng phải đính kèm tối thiểu một hình ảnh. Nếu người dùng không tải lên bức ảnh nào, hệ thống sẽ kích hoạt luồng ngoại lệ, gửi thông báo yêu cầu bổ sung hình ảnh và quay lại bước nhập dữ liệu.

  4. Lý do nhóm tác giả lựa chọn thư viện React Query song hành cùng Redux Toolkit ở tầng Front-end là gì? Tác giả lựa chọn React Query vì thư viện này giải quyết trực tiếp việc quản lý server state và cơ chế bộ nhớ đệm (caching). So với Redux vốn đòi hỏi phải thiết lập nhiều hành động (actions), bộ giảm (reducers), phần mềm trung gian (middleware) và bộ chọn (selectors) cho mỗi lần cập nhật dữ liệu, React Query chỉ cần một câu truy vấn (query) hoặc đột biến (mutation), giúp mã nguồn ngắn gọn và việc đồng bộ hóa dữ liệu từ máy chủ dễ dàng hơn.

  5. Nhóm nghiên cứu đã khảo sát những website du lịch cụ thể nào để làm cơ sở xác định yêu cầu hệ thống? Nhóm tác giả đã tiến hành khảo sát và đánh giá ưu, nhược điểm của 5 website thực tế: "Hahalolo - mạng xã hội du lịch toàn cầu", "Gody.vn - Đi & khám phá theo cách của bạn", "GAFFL find a travel buddy, plan trips and travel together", "Couchsurfing: Meet and stay with locals all over the world", và "TripGiraffe: Go explore together".

Kết luận

Khóa luận tốt nghiệp của sinh viên Nguyễn Hiếu Đan và Dương Đức Thắng đã hoàn thành toàn diện mục tiêu xây dựng website cộng đồng chia sẻ trải nghiệm du lịch và điểm đến. Đề tài thể hiện tính quy chuẩn trong phương pháp kỹ thuật phần mềm thông qua việc phân tích kiến trúc phân tầng rõ ràng, thiết kế chi tiết 18 bảng cơ sở dữ liệu và mô hình hóa đầy đủ các ca sử dụng thực tế. Nền tảng kết hợp thành công giữa các công nghệ hiện đại gồm NextJS, Java Spring Boot cùng hệ sinh thái dịch vụ đám mây AWS, tạo tiền đề kỹ thuật vững chắc cho việc phát triển các giải pháp mạng xã hội chuyên ngành trong tương lai.