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

Trong bối cảnh xã hội hiện đại tại Việt Nam, sự gia tăng của mức sống đi kèm với hiện tượng lãng phí tài nguyên sinh hoạt diễn ra phổ biến ở nhiều hộ gia đình. Một lượng lớn thực phẩm dư thừa không được sử dụng hết và bị loại bỏ ra môi trường, trong khi nguồn phụ phẩm này hoàn toàn có thể tái sử dụng cho các mục đích thiết thực khác như làm thức ăn chăn nuôi. Song song với vấn đề thực phẩm, nhu cầu trao đổi, chia sẻ và cho tặng các đồ dùng cá nhân, vật dụng sinh hoạt đã qua sử dụng nhưng còn giá trị trong cộng đồng ngày càng trở nên rõ nét. Nhận diện được nhu cầu thực tiễn đó, nhóm tác giả Nguyễn Xuân Lộc, Phùng Huy Hoàng và Huỳnh Đình Thịnh, dưới sự hướng dẫn của ThS. Nguyễn Trần Thị Vân tại Khoa Đào tạo Quốc tế – Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh, đã thực hiện đồ án tốt nghiệp ngành Công nghệ Thông tin với đề tài: "Xây dựng website mạng xã hội chia sẻ đồ dùng hữu ích" (Building a Social Network Website for Sharing Useful Items), hiện thực hóa qua nền tảng mang tên ORON (viết tắt từ "Our Redundancies, Other Necessaries" – Đồ thừa của ta, nhu cầu của người).

Mục tiêu nghiên cứu tổng quát của đồ án là thiết kế, phát triển và đánh giá khả năng vận hành của một nền tảng mạng xã hội chuyên biệt dành cho việc chia sẻ các vật phẩm dư thừa giữa những người dùng trong cộng đồng. Để đạt được mục tiêu chung, các nhiệm vụ nghiên cứu cụ thể được xác định bao gồm:

  1. Nghiên cứu cơ sở lý thuyết, phân tích khảo sát thực trạng và mô hình hóa nhu cầu cho – nhận đồ dùng của người dân để xác định tập yêu cầu chức năng và phi chức năng của hệ thống.
  2. Thiết kế kiến trúc phần mềm, xây dựng cơ sở dữ liệu quan hệ và mô hình hóa hành vi hệ thống thông qua các biểu đồ ca sử dụng (Use Case) và biểu đồ tuần tự (Sequence Diagram).
  3. Triển khai lập trình ứng dụng web hoàn chỉnh với giao diện phía người dùng (Frontend), khối xử lý nghiệp vụ phía máy chủ (Backend) và hệ thống lưu trữ dữ liệu.
  4. Đánh giá tính khả thi, hiệu năng vận hành và khả năng thúc đẩy lối sống tiêu dùng có trách nhiệm, giảm thiểu lãng phí và hỗ trợ tiết kiệm chi phí cho cộng đồng thông qua nền tảng số.

Đối tượng nghiên cứu của đồ án là quy trình chia sẻ tài nguyên dư thừa và mô hình kiến trúc, giải pháp công nghệ xây dựng website mạng xã hội phục vụ việc kết nối người cho và người nhận đồ dùng. Về phạm vi nghiên cứu:

  • Phạm vi không gian: Hệ thống được thiết kế hướng tới cộng đồng người dùng tại Việt Nam, tích hợp cấu trúc dữ liệu địa giới hành chính quốc gia (Tỉnh/Thành phố, Quận/Huyện, Phường/Xã) nhằm hỗ trợ định vị và tính toán khoảng cách giữa vị trí vật phẩm và người đăng ký nhận.
  • Phạm vi thời gian: Đề tài được triển khai trong thời gian 15 tuần, bắt đầu từ ngày 02/09/2024 đến ngày 10/12/2024.
  • Phạm vi công nghệ: Ứng dụng giới hạn trong phạm vi phát triển web với ba công nghệ cốt lõi gồm ReactJS cho phía Frontend, NestJS cho phía Backend và PostgreSQL cho hệ quản trị cơ sở dữ liệu.

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

Đồ án tiếp cận vấn đề chia sẻ tài nguyên dựa trên việc viện dẫn Tháp nhu cầu của Maslow (Maslow's hierarchy of needs) để lý giải động lực tương tác xã hội và hành vi cho tặng đồ dùng giữa con người trong cộng đồng số. Về mặt kỹ thuật, hệ thống vận dụng các công nghệ và giao thức nền tảng:

  • PostgreSQL: Hệ quản trị cơ sở dữ liệu quan hệ đối tượng (ORDBMS) mã nguồn mở, hỗ trợ đầy đủ các chuẩn SQL, cung cấp cơ chế bảo mật kiểm soát truy cập dựa trên vai trò (RBAC), hỗ trợ nhiều kiểu dữ liệu phức tạp như JSON và dữ liệu nhị phân.
  • NestJS: Khung làm việc (framework) phía máy chủ cho môi trường Node.js được xây dựng trên nền tảng TypeScript. NestJS ứng dụng mẫu kiến trúc phân tầng module hóa chặt chẽ, bao gồm Modules (đóng gói logic), Controllers (tiếp nhận HTTP request và định tuyến), và Providers/Services (xử lý logic nghiệp vụ và tương tác dữ liệu).
  • JSON Web Token (JWT): Tiêu chuẩn mở RFC 7519 được sử dụng để xây dựng cơ chế xác thực và phân quyền không trạng thái (stateless) giữa Client và Server. Cấu trúc token bao gồm ba phần: Header, Payload và Signature. Quyền hạn của người dùng được kiểm soát tại Backend thông qua các Guard chuyên biệt (JwtAuthGuard cho người dùng thông thường và JwtAdminAuthGuard cho quyền quản trị).
  • Multer và Google Cloud Storage API: Multer đóng vai trò là middleware trung gian phân tích dữ liệu dạng multipart/form-data từ các HTTP request, kết hợp cùng Google Cloud Storage API để quản lý và lưu trữ tệp tin đa phương tiện trên các thùng chứa đám mây (cloud buckets).
  • Firebase Admin SDK / Firebase Cloud Messaging (FCM): Nền tảng hạ tầng gửi thông báo đẩy (push notifications) theo thời gian thực tới các thiết bị khách thông qua việc quản lý FCM Token.
  • ReactJS: Thư viện phía Frontend dựa trên ngôn ngữ JavaScript, tổ chức giao diện theo cây thành phần (Component Tree), tận dụng Virtual DOM cùng thuật toán đối soát (Reconciliation) để tối ưu hóa hiệu năng kết xuất giao diện khi có sự thay đổi về State hoặc Props.
  • Figma: Công cụ thiết kế giao diện (UI) và trải nghiệm người dùng (UX) trên nền tảng đám mây, phục vụ xây dựng nguyên mẫu tương tác và bộ quy chuẩn thiết kế thành phần.

Về phương pháp nghiên cứu, nhóm tác giả kết hợp phương pháp phân tích lý thuyết, khảo sát thực nghiệm và quy trình phân tích thiết kế phần mềm hướng đối tượng:

  • Phương pháp khảo sát thực tế: Thực hiện thu thập dữ liệu định lượng thông qua phiếu khảo sát trên cỡ mẫu $N = 138$ người nhằm đánh giá thói quen và nhu cầu cho – nhận đồ dùng.
  • Phương pháp phân tích so sánh hệ thống tương quan: Tiến hành khảo sát tính năng, tốc độ tải trang, giao diện và nhược điểm của ba nền tảng phổ biến hiện nay: Facebook (mạng xã hội tổng quát), Chợ Tốt (trang rao vặt thương mại điện tử chuyên biệt) và Instagram (mạng xã hội hình ảnh/video).
  • Phương pháp mô hình hóa phần mềm: Sử dụng chuẩn UML (Unified Modeling Language) để phân rã 45 trường hợp sử dụng (Use Cases) và xây dựng 25 biểu đồ tuần tự (Sequence Diagrams) mô tả luồng dữ liệu của các chức năng nghiệp vụ trọng yếu.

Dữ liệu của đồ án bắt nguồn từ hai nguồn: nguồn sơ cấp thu thập từ bảng hỏi khảo sát 138 đối tượng thực tế và nguồn thứ cấp trích xuất từ tài liệu kỹ thuật chính thức của các framework, cơ sở dữ liệu và thư viện lập trình.

Thiết kế và triển khai hệ thống

Hệ thống ORON được tổ chức theo kiến trúc phân tách Client - Server. Phía máy khách (ReactJS) giao tiếp với máy chủ ứng dụng (NestJS) thông qua các giao thức HTTP/REST API, sử dụng chuỗi mã hóa Bearer JWT để xác thực quyền truy cập trên từng tác vụ.

Phân tích yêu cầu hệ thống

Dựa trên kết quả khảo sát, nhóm tác giả đã xác định và phân loại các yêu cầu kỹ thuật của hệ thống thành ba nhóm cụ thể:

Yêu cầu chức năng hệ thống (System Functional Requirements): Bao gồm 5 chức năng cơ bản phục vụ quản lý truy cập và bảo mật tài khoản:

  1. Đăng ký tài khoản mới (Register).
  2. Đăng nhập hệ thống (Login) với các ràng buộc kiểm tra tên đăng nhập và mật khẩu.
  3. Đăng xuất (Log out).
  4. Đổi mật khẩu (Change password) với cơ chế xác thực mật khẩu hiện tại.
  5. Quên mật khẩu (Forgot password) thông qua việc gửi mã OTP xác thực qua email.

Yêu cầu chức năng nghiệp vụ (Business Functional Requirements): Hệ thống thiết lập 21 nhóm chức năng nghiệp vụ phục vụ trực tiếp cho mô hình mạng xã hội chia sẻ đồ dùng:

STT Tên chức năng Mô tả chi tiết nghiệp vụ
1 Lọc bài đăng (Filter post) Lọc danh sách sản phẩm theo từ khóa và danh mục mặt hàng.
2 Tìm kiếm bài đăng (Search post) Tìm kiếm các vật phẩm được chia sẻ dựa trên từ khóa nhập vào.
3 Tìm kiếm người dùng (Search user) Tìm kiếm tài khoản thành viên dựa trên tên người dùng (username).
4 Chỉnh sửa hồ sơ (Edit profile) Cập nhật thông tin cá nhân, ảnh đại diện (avatar) và ảnh bìa (cover photo).
5 Tạo bài đăng mới (Create new post) Đăng tải thông tin đồ dùng gồm hình ảnh, tiêu đề, mô tả, danh mục, địa chỉ và chế độ hiển thị.
6 Chỉnh sửa, xóa bài đăng (Edit, delete posts) Người đăng chủ động chỉnh sửa nội dung hoặc xóa bỏ bài đăng của mình.
7 Xem chi tiết bài đăng (Post details) Hiển thị toàn bộ thông tin chi tiết, hình ảnh và vị trí của vật phẩm.
8 Đăng ký nhận đồ (Register to receive products) Người dùng gửi yêu cầu nhận vật phẩm từ bài đăng của thành viên khác.
9 Quản lý bài đăng cá nhân (Manage posts) Theo dõi, thống kê toàn bộ danh sách bài chia sẻ do chính mình tạo ra.
10 Quản lý yêu cầu nhận đồ (Manage post registration request) Quản lý các yêu cầu nhận đồ mà chính người dùng đã gửi đi tới các bài viết khác.
11 Quản lý đơn đăng ký nhận đồ (Manage post registrations) Người đăng bài duyệt hoặc từ chối các yêu cầu xin nhận đồ từ người dùng khác.
12 Tương tác cảm xúc (React post) Bày tỏ cảm xúc (thích, yêu thích...) trên bài viết chia sẻ.
13 Theo dõi người dùng (Follow) Theo dõi thành viên khác; khi hai người theo dõi lẫn nhau hệ thống tự động xác lập bạn bè.
14 Bình luận bài đăng (Comment post) Viết bình luận, phản hồi bình luận, chỉnh sửa hoặc xóa bình luận cá nhân.
15 Đánh giá sau nhận hàng (Review post) Chấm điểm, đánh giá mức độ uy tín của người đăng sau khi nhận được sản phẩm thực tế.
16 Báo cáo vi phạm (Report post) Gửi phản ánh tới quản trị viên về các bài đăng vi phạm chuẩn mực cộng đồng.
17 Quản lý báo cáo vi phạm (Manage reports) Dành cho Quản trị viên (Admin): xem xét, phản hồi, phê duyệt hoặc xóa các báo cáo.
18 Bảng xếp hạng thành viên (Ranking user) Xếp hạng người dùng (tuần, tháng, năm) dựa trên số lượt đánh giá uy tín sau khi cho đồ.
19 Lưu bài viết (Saved post) Lưu trữ các bài đăng quan tâm vào danh mục riêng hoặc xóa khỏi danh mục lưu.
20 Đăng ký quảng cáo (Register advertises) Người dùng hoặc doanh nghiệp đăng ký đặt biểu ngữ quảng cáo trên nền tảng.
21 Quản lý quảng cáo (Manage advertise) Quản trị viên duyệt, từ chối hoặc theo dõi hợp đồng và hiệu suất hiển thị quảng cáo.

Yêu cầu phi chức năng (Non-Functional Requirements): Hệ thống đặt ra 7 tiêu chí kỹ thuật: Hiệu năng (tốc độ tải nhanh, xử lý không lỗi), Bảo mật (mã hóa dữ liệu, an toàn thông tin cá nhân), Độ tin cậy (vận hành liên tục, giảm thiểu thời gian gián đoạn), Khả năng sử dụng (giao diện trực quan, rõ ràng thông tin sản phẩm và vị trí), Khả năng tương thích (hỗ trợ đa dạng trình duyệt và hệ điều hành), Khả năng bảo trì (mã nguồn module hóa, tài liệu kỹ thuật đầy đủ) và Tuân thủ pháp lý (đáp ứng các quy định bảo vệ dữ liệu và bảo vệ người tiêu dùng).

Thiết kế cơ sở dữ liệu quan hệ

Cơ sở dữ liệu của hệ thống được xây dựng trên PostgreSQL, bao gồm 27 bảng dữ liệu được chuẩn hóa để quản lý toàn bộ các thực thể của đồ án:

  1. Province: Quản lý danh mục Tỉnh/Thành phố trực thuộc trung ương.
  2. District: Quản lý danh mục Quận/Huyện.
  3. Ward: Quản lý danh mục Phường/Xã/Thị trấn.
  4. Role: Lưu trữ các vai trò người dùng trong hệ thống (User, Admin...).
  5. Permission: Danh mục các quyền hạn chi tiết gắn với từng thao tác API.
  6. Role Permission Relationship: Bảng quan hệ kết nối đa - đa giữa vai trò và quyền hạn.
  7. User: Lưu trữ thông tin tài khoản người dùng, định danh, mật khẩu đã băm và thông tin cá nhân.
  8. Refresh Token: Quản lý mã làm mới phiên đăng nhập nhằm duy trì xác thực bảo mật cho JWT.
  9. FCM Token: Lưu trữ định danh thiết bị của người dùng phục vụ dịch vụ gửi tin nhắn đẩy Firebase.
  10. Notification: Quản lý nội dung và trạng thái đã đọc của các thông báo hệ thống gửi tới người dùng.
  11. Category: Danh mục phân loại các mặt hàng chia sẻ (thực phẩm, đồ gia dụng, thiết bị...).
  12. Post: Lưu trữ bài đăng chia sẻ, chứa thông tin tiêu đề, mô tả, tình trạng, tọa độ/địa chỉ và chế độ hiển thị.
  13. Post Registration: Quản lý các lượt đăng ký xin nhận vật phẩm từ các thành viên khác.
  14. Comment: Lưu trữ các bình luận và cấu trúc phản hồi bình luận phân cấp trên bài viết.
  15. Review: Quản lý nội dung nhận xét và điểm đánh giá người cho sau khi hoàn tất giao nhận.
  16. Saved: Lưu trữ liên kết các bài viết được người dùng đánh dấu quan tâm.
  17. Reaction: Lưu trữ trạng thái bày tỏ cảm xúc của người dùng đối với các bài đăng.
  18. Report: Ghi nhận các khiếu nại, báo cáo vi phạm nội dung từ người dùng gửi tới hệ thống.
  19. Report Response: Lưu trữ nội dung phản hồi và xử lý của quản trị viên đối với từng báo cáo.
  20. Client: Quản lý thông tin các đối tác hoặc cá nhân đăng ký sử dụng dịch vụ quảng cáo.
  21. Advertisement: Lưu trữ thông tin chiến dịch quảng cáo và nội dung tiếp thị.
  22. Rental Contract: Lưu trữ hợp đồng thuê vị trí đặt biểu ngữ quảng cáo trên hệ thống.
  23. Advertisement Banner: Quản lý tệp hình ảnh và liên kết chuyển hướng của biểu ngữ quảng cáo.
  24. AD Performance: Ghi nhận dữ liệu thống kê lượt hiển thị và lượt nhấp chuột của quảng cáo.
  25. File: Quản lý siêu dữ liệu (metadata) của các tệp tin lưu trữ tải lên đám mây.
  26. File Related Morph: Bảng quan hệ đa hình liên kết tệp tin với nhiều thực thể khác nhau (bài đăng, hồ sơ, banner).

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

Chương 1: Giới thiệu đề tài (Overview of the Project)

Nội dung chương tập trung trình bày bối cảnh xã hội dẫn đến sự cần thiết của đề tài, xuất phát từ thực trạng lãng phí thực phẩm và nhu cầu san sẻ các vật phẩm đã qua sử dụng trong cộng đồng tại Việt Nam. Chương này phân tích ý nghĩa khoa học của đề tài như một mô hình ứng dụng thực tiễn cho lý thuyết tiêu dùng cộng tác (collaborative consumption), đồng thời chỉ ra ý nghĩa thực tiễn trong việc giảm thiểu phát thải carbon, tiết kiệm chi phí và hướng tới mục tiêu phát triển bền vững. Mục tiêu, đối tượng, phạm vi nghiên cứu 15 tuần cùng bộ ba công nghệ ReactJS, NestJS, PostgreSQL cũng được xác lập chính thức trong chương này.

Chương 2: Cơ sở lý thuyết (Theoretical Foundations)

Chương 2 trình bày chi tiết về mặt lý thuyết các công nghệ, thư viện và giao thức được ứng dụng trong dự án. Tác giả tiến hành phân tích ưu điểm, nhược điểm và cấu trúc vận hành của hệ quản trị cơ sở dữ liệu quan hệ PostgreSQL; giải thích cấu trúc ba tầng (Modules, Providers, Controllers) của NestJS; phân tích cơ chế xác thực không trạng thái của JSON Web Token (RFC 7519); làm rõ cách thức xử lý luồng tệp tin thông qua middleware Multer và lưu trữ đám mây Google Cloud Storage API; trình bày cơ chế phân phối thông báo đẩy qua Firebase Admin SDK/FCM; và phân tích nguyên lý hoạt động của ReactJS thông qua Virtual DOM cùng công cụ thiết kế giao diện Figma.

Chương 3: Thu thập và mô hình hóa yêu cầu (Requirement Capturing and Modeling)

Nội dung chương trình bày kết quả khảo sát thực tế và phân tích các hệ thống hiện có trên thị trường. Bảng số liệu khảo sát $N=138$ người cho thấy tỷ lệ người có nhu cầu cho nhận đồ trực tuyến chiếm ưu thế ($54,6%$) so với hình thức trực tiếp ($45,4%$). Chương này phân tích chi tiết ưu nhược điểm của Facebook, Chợ Tốt và Instagram để rút ra bài học thiết kế. Toàn bộ 5 yêu cầu chức năng hệ thống, 21 yêu cầu chức năng nghiệp vụ, 7 yêu cầu phi chức năng cùng các biểu đồ ca sử dụng tổng quát của người dùng và quản trị viên đều được đặc tả chi tiết trong chương này.

Chương 4: Phân tích và thiết kế hệ thống (System Analysis and Design)

Chương 4 là phần trọng tâm về mặt kỹ thuật phần mềm, hiện thực hóa các yêu cầu đã thu thập thành mô hình chi tiết. Tác giả thiết kế 25 sơ đồ tuần tự (Sequence Diagrams) mô tả chi tiết các tương tác giữa Client, Controller, Service và Database cho toàn bộ các luồng công việc từ đăng ký, đăng nhập, quên mật khẩu với OTP, tạo bài, duyệt yêu cầu nhận đồ, đánh giá sau nhận hàng đến đăng ký hợp đồng quảng cáo. Chương này cũng trình bày chi tiết cấu trúc thuộc tính, khóa chính, khóa ngoại của 27 bảng dữ liệu quan hệ, cùng với thiết kế giao diện chi tiết cho hơn 70 màn hình người dùng và quản trị viên.

Chương 5: Hiện thực hóa và kiểm thử (Implementation and Testing)

Chương cuối cùng ghi nhận kết quả lập trình thực tế và các kịch bản kiểm thử chức năng chính của hệ thống. Tác giả thiết lập tài liệu hướng dẫn chạy mã nguồn, xác định cấu hình phần cứng tối thiểu và khuyến nghị để vận hành hệ thống, đồng thời ghi nhận kết quả kiểm thử trên các chuỗi nghiệp vụ thực tế như: đăng ký, đăng nhập, điều hướng trang chủ, tạo bài đăng mới, đăng nhập bằng tài khoản thứ hai để đăng ký nhận đồ, tài khoản người đăng tiến hành phê duyệt, xác nhận đã nhận sản phẩm và thực hiện chấm điểm đánh giá uy tín.

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

Đồ án đã hoàn thành toàn diện các mục tiêu đề ra và ghi nhận các kết quả cụ thể:

Kết quả khảo sát và phân tích thực nghiệm: Khảo sát thực tế trên mẫu 138 người ghi nhận tỷ lệ lựa chọn phương thức giao nhận hàng hóa cụ thể như sau:

Phương thức cho và nhận hàng hóa Số lượng (người) Tỷ lệ (%)
Người muốn cho và nhận qua phương thức trực tiếp 63 45,4%
Người muốn cho và nhận qua phương thức trực tuyến 75 54,6%

Kết quả khảo sát khẳng định nhu cầu trao đổi trực tuyến chiếm tỷ trọng lớn hơn, cung cấp cơ sở dữ liệu thực chứng cho việc xây dựng nền tảng ORON.

Sản phẩm kỹ thuật đạt được:

  1. Xây dựng hoàn chỉnh kiến trúc web fullstack tích hợp ReactJS, NestJS và PostgreSQL với mã nguồn phân tầng rõ ràng, đảm bảo khả năng mở rộng.
  2. Hoàn thiện bộ tài liệu phân tích thiết kế phần mềm chuẩn mực bao gồm 45 use cases có mô tả chi tiết, 25 sequence diagrams đặc tả luồng xử lý và lược đồ cơ sở dữ liệu quan hệ với 27 bảng thực thể liên kết chặt chẽ.
  3. Triển khai đầy đủ các tính năng đặc thù: quy trình đăng ký nhận đồ có phê duyệt từ người cho; hệ thống tính khoảng cách giữa địa chỉ đăng ký và vị trí sản phẩm; hệ thống đánh giá uy tín kèm bảng xếp hạng người dùng (User Leaderboard) theo tuần, tháng, năm; tích hợp cơ chế bảo mật JWT với Guard phân quyền, xác thực email OTP; và phân hệ quản lý đối tác, hợp đồng quảng cáo trực tuyến.

Đóng góp của đồ án:

  • Về mặt lý luận và khoa học: Cung cấp một nghiên cứu trường hợp (case study) thực tế minh chứng cho việc ứng dụng công nghệ web hiện đại vào việc thúc đẩy mô hình tiêu dùng cộng tác (collaborative consumption) và quản lý tài nguyên bền vững.
  • Về mặt thực tiễn: Khắc phục các hạn chế của mạng xã hội thương mại (như tin rác, quảng cáo dày đặc, thiếu cơ chế sàng lọc nhu cầu chia sẻ phi lợi nhuận) bằng cách tạo ra không gian mạng chuyên biệt kết nối trực tiếp nguồn tài nguyên dư thừa tới đúng đối tượng có nhu cầu, đóng góp thiết thực vào mục tiêu giảm thiểu rác thải sinh hoạt và bảo vệ môi trường.

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

Hạn chế của đồ án:

  • Thời gian nghiên cứu và triển khai bị khống chế trong khuôn khổ thời lượng 15 tuần học kỳ, khiến một số chi tiết kỹ thuật chuyên sâu chưa đạt mức hoàn thiện tối đa.
  • Nhóm sinh viên thừa nhận kiến thức kỹ thuật và kinh nghiệm thực tế trong việc vận hành các dự án phần mềm quy mô lớn còn có những giới hạn nhất định.
  • Quy mô mẫu khảo sát thực trạng ban đầu dừng lại ở mức $N = 138$ người, chưa bao phủ đa dạng các tầng lớp dân cư và các địa bàn địa lý rộng lớn hơn ngoài khu vực sinh viên và đô thị lân cận.

Hướng phát triển tiếp theo:

  • Tiếp thu phản biện của hội đồng chấm đồ án tốt nghiệp để tối ưu hóa hiệu năng cơ sở dữ liệu PostgreSQL và tinh chỉnh mã nguồn NestJS/ReactJS.
  • Mở rộng các tính năng cộng đồng chuyên sâu đã được định hình trong ý tưởng ban đầu nhưng chưa tích hợp đầy đủ, bao gồm: phân hệ cho phép người nhận quyên góp (donation) một khoản tiền nhỏ nhằm tri ân người chia sẻ, tính năng nhắn tin tức thời (chat trực tiếp thời gian thực) giữa hai bên, và tính năng tạo lập các hội nhóm chia sẻ đồ dùng theo từng cụm dân cư, trường học hoặc địa bàn hành chính cục bộ.

Giá trị tham khảo

Đồ án tốt nghiệp là tài liệu tham khảo có giá trị cao đối với:

  • Sinh viên ngành Công nghệ Thông tin và Kỹ thuật Phần mềm: Có thể sử dụng đồ án làm tài liệu mẫu chuẩn mực về quy trình thiết kế hệ thống theo tiêu chuẩn công nghiệp: từ khảo sát nhu cầu, xây dựng bảng đặc tả 45 ca sử dụng, vẽ sơ đồ tuần tự 25 nghiệp vụ đến thiết kế cơ sở dữ liệu quan hệ chuẩn hóa 27 bảng.
  • Các kỹ sư lập trình phát triển ứng dụng Fullstack: Cung cấp phương thức tích hợp thực tế giữa ReactJS ở Client với NestJS ở Server, ứng dụng kiến trúc module hóa, cơ chế bảo mật kết hợp JWT Stateless, JwtAuthGuard, upload tệp qua Multer lên Google Cloud Storage và giải pháp gửi thông báo qua Firebase Cloud Messaging.
  • Các nhà nghiên cứu về Kinh tế chia sẻ và Ứng dụng vì môi trường: Cung cấp luận cứ khảo sát thực tế và mô hình giải pháp số hóa để thúc đẩy lối sống bền vững, tuần hoàn vật dụng trong cộng đồng.

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

1. Ứng dụng trong đồ án có tên là gì và mang ý nghĩa như thế nào?

Ứng dụng được nhóm tác giả đặt tên là ORON, viết tắt từ cụm từ tiếng Anh "Our Redundancies, Other Necessaries" (nghĩa là: "Đồ thừa của chúng ta, nhưng là nhu cầu cần thiết của người khác"). Tên gọi này phản ánh đúng tôn chỉ của nền tảng: biến các nguồn tài nguyên, thực phẩm hoặc đồ dùng dư thừa của một người thành nguồn cung cấp hữu ích cho người đang có nhu cầu, nhằm giảm thiểu lãng phí và thúc đẩy bảo vệ môi trường.

2. Quy trình cho và nhận một vật phẩm trên hệ thống ORON diễn ra như thế nào?

Quy trình được chuẩn hóa qua các bước: Người cho đăng tải bài viết kèm hình ảnh, mô tả, danh mục và địa chỉ của vật phẩm (Create Post). Người có nhu cầu tìm kiếm, xem khoảng cách địa lý và gửi yêu cầu đăng ký nhận (Register to receive products). Người cho quản lý danh sách đăng ký và duyệt người nhận phù hợp (Manage post registrations). Sau khi tiếp nhận sản phẩm thực tế, người nhận xác nhận hoàn tất và thực hiện đánh giá mức độ uy tín của người cho (Review post), dữ liệu này sẽ được dùng để xếp hạng thành viên trên hệ thống (Ranking user).

3. Kết quả khảo sát thực tế của đề tài ghi nhận số liệu cụ thể ra sao?

Nhóm tác giả tiến hành khảo sát thực nghiệm trên 138 người về phương thức cho và nhận hàng hóa. Kết quả thu được ghi nhận có 63 người lựa chọn phương thức giao nhận trực tiếp (chiếm tỷ lệ 45,4%), trong khi có tới 75 người mong muốn thực hiện việc cho và nhận thông qua hình thức trực tuyến (chiếm tỷ lệ 54,6%).

4. Hệ thống cơ sở dữ liệu của ứng dụng được thiết kế với quy mô bao nhiêu bảng?

Hệ thống sử dụng cơ sở dữ liệu PostgreSQL với cấu trúc chuẩn hóa gồm đúng 27 bảng dữ liệu, phân thành các nhóm: địa giới hành chính (Province, District, Ward), phân quyền người dùng (Role, Permission, Role Permission Relationship, User), phiên làm việc và thông báo (Refresh Token, FCM Token, Notification), nội dung và tương tác mạng xã hội (Category, Post, Post Registration, Comment, Review, Saved, Reaction, Report, Report Response), đối tác và quảng cáo (Client, Advertisement, Rental Contract, Advertisement Banner, AD Performance) cùng hệ thống tệp tin đa hình (File, File Related Morph).

5. Cơ chế bảo mật và xác thực người dùng trong hệ thống backend NestJS được triển khai ra sao?

Hệ thống sử dụng tiêu chuẩn JSON Web Token (JWT - RFC 7519) để xác thực không trạng thái. Khi người dùng đăng nhập thành công, máy chủ cấp phát token gồm Header, Payload và Signature. Ở các yêu cầu tiếp theo, token được gửi qua Authorization header định dạng Bearer <token>. Phía máy chủ NestJS triển khai các Guard chuyên biệt gồm JwtAuthGuard để kiểm tra phiên người dùng và JwtAdminAuthGuard để kiểm soát quyền truy cập của Quản trị viên vào các API nghiệp vụ tương ứng.

Kết luận

Đồ án tốt nghiệp "Xây dựng website mạng xã hội chia sẻ đồ dùng hữu ích" của nhóm tác giả tại Trường Đại học Sư phạm Kỹ thuật TP.HCM đã giải quyết thành công bài toán kết nối tài nguyên dư thừa trong cộng đồng thông qua nền tảng web ORON. Đề tài kết hợp chặt chẽ giữa cơ sở khảo sát thực nghiệm trên 138 người dùng với quy trình thiết kế công nghệ phần mềm hoàn chỉnh, làm chủ bộ công nghệ hiện đại ReactJS, NestJS và PostgreSQL. Hệ thống không chỉ đáp ứng trọn vẹn các yêu cầu nghiệp vụ khắt khe của một mạng xã hội trao đổi vật phẩm mà còn đóng góp giải pháp số thiết thực vào việc giảm thiểu phát thải và nâng cao ý thức tiêu dùng có trách nhiệm trong xã hội.