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

Đề tài khóa luận tốt nghiệp "Xây dựng website đăng tin và tìm kiếm phòng trọ" (tên tiếng Anh: Build a website to post and search for accommodation) được thực hiện bởi nhóm sinh viên Nguyễn Thị Như Quỳnh (MSSV: 18110189, lớp 18110CLST1) và Huỳnh Thanh Tâm (MSSV: 18110194, lớp 18110CLST3), dưới sự hướng dẫn của TS. Lê Vĩnh Thịnh tại Khoa Chất lượng cao, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (khóa tốt nghiệp tháng 6 năm 2022).

Bối cảnh thực tiễn được nhóm tác giả đặt ra bắt nguồn từ sự phát triển kinh tế - xã hội sau đại dịch Covid-19, khi công nghệ thông tin và Internet đóng vai trò thiết yếu làm thay đổi phương thức sinh hoạt, làm việc, giao tiếp và tiếp cận thông tin của người dân. Tại Việt Nam, quá trình đô thị hóa diễn ra nhanh chóng, đặc biệt là tại các trung tâm kinh tế trọng điểm như Thành phố Hồ Chí Minh, kéo theo làn sóng người lao động và sinh viên đổ về học tập, làm việc ngày càng đông. Tình trạng này dẫn đến nhu cầu rất lớn về việc tìm kiếm chỗ ở, thuê mặt bằng, văn phòng và nhà nguyên căn. Trong khi đó, các phương thức truyền thống như tìm phòng trọ qua môi giới trung gian hay dán tờ rơi quảng cáo bộc lộ nhiều hạn chế về hiệu quả tìm kiếm và gây mất mỹ quan đô thị. Do đó, nhóm nghiên cứu đặt mục tiêu xây dựng một nền tảng website trực tuyến kết nối trực tiếp giữa người cho thuê và người có nhu cầu thuê một cách thuận tiện.

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

  1. Nhiệm vụ về mặt lý luận và công nghệ: Nghiên cứu cơ sở chuyên môn, khảo sát tổng quan và đánh giá khả năng ứng dụng của mô hình kiến trúc MERN Stack (MongoDB, ExpressJS, ReactJS, NodeJS). Song song đó, tìm hiểu các thư viện bổ trợ, mô-đun mã nguồn và mẫu giao diện (template) nhằm tối ưu hóa trải nghiệm người dùng; đồng thời làm chủ quy trình lưu trữ (hosting) để triển khai ứng dụng lên môi trường Internet.
  2. Nhiệm vụ về mặt thực nghiệm và xây dựng sản phẩm: Vận dụng các kiến thức chuyên ngành đã học để thiết kế và hiện thực hóa sản phẩm website hoàn chỉnh. Ứng dụng phải đáp ứng các nghiệp vụ cơ bản phục vụ đa dạng nhóm người dùng (người thuê, chủ nhà, bộ phận quản lý hệ thống, quản trị viên), đồng thời có cấu trúc linh hoạt để tiếp tục nâng cấp, phát triển thêm các tính năng mở rộng trong tương lai.

Đối tượng nghiên cứu của đề tài là hệ thống website hỗ trợ việc đăng tin quảng bá và tìm kiếm nhà trọ, phòng trọ, mặt bằng kinh doanh và văn phòng cho thuê. Phạm vi nghiên cứu tập trung vào đối tượng người dùng có nhu cầu tìm chỗ ở hoặc thuê không gian làm việc, cùng nhóm chủ nhà/môi giới muốn tiếp cận khách thuê nhanh chóng thông qua môi trường mạng Internet.

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

Khóa luận xây dựng giải pháp kỹ thuật dựa trên nền tảng mô hình kiến trúc MERN Stack, bao gồm bốn công nghệ cốt lõi:

  • MongoDB: Hệ quản trị cơ sở dữ liệu NoSQL hướng tài liệu (document-oriented), mã nguồn mở, được viết bằng C++. Dữ liệu được tổ chức dưới dạng BSON (cấu trúc cặp khóa - giá trị tương tự JSON), lưu trữ trong các Collection thay vì bảng quan hệ truyền thống. Mô hình này sở hữu đặc tính phi cấu trúc (schema-less), cho phép mở rộng quy mô linh hoạt (automatic sharding, replication), tối ưu tốc độ đọc/ghi và không đòi hỏi các phép nối (join) phức tạp.
  • ExpressJS: Khung ứng dụng (framework) mã nguồn mở chạy trên nền Node.js, hoạt động như một tầng trung gian (middleware) kết nối giữa giao diện người dùng và máy chủ. Framework này cung cấp cơ chế định tuyến (routing) nâng cao, xử lý kiểm soát lỗi (debugging) và hỗ trợ kiến trúc MVC.
  • ReactJS: Thư viện JavaScript mã nguồn mở cho phía máy khách (frontend) do Facebook phát triển, chuyên xây dựng giao diện người dùng theo mô hình ứng dụng đơn trang (Single Page Application - SPA). React hoạt động dựa trên cơ chế DOM ảo (Virtual DOM), sử dụng cú pháp mở rộng JSX và mô hình thành phần tái sử dụng (reusable components).
  • NodeJS: Môi trường thực thi JavaScript phía máy chủ (server-side runtime) xây dựng trên nền tảng V8 Engine của Google. Node.js hoạt động theo mô hình đơn luồng kết hợp vòng lặp sự kiện (single-threaded event loop) và cơ chế vào/ra bất đồng bộ không chặn (asynchronous non-blocking I/O), cho phép phục vụ đồng thời hàng ngàn kết nối mạng với mức tiêu hao bộ nhớ thấp.

Về phương pháp nghiên cứu, nhóm tác giả kết hợp nghiên cứu tài liệu kỹ thuật trực tuyến với phương pháp khảo cứu, phân tích thực tế thông qua việc khảo sát các hệ thống tìm kiếm bất động sản hiện hành tại Việt Nam, cụ thể là hai nền tảng Mogi và Phongtro123. Bảng tổng hợp dưới đây phản ánh các đặc điểm và thế mạnh của hai hệ thống tham chiếu được ghi nhận trong văn bản:

Tên hệ thống tham chiếu Địa chỉ website Lĩnh vực trọng tâm Các ưu điểm chính được nhóm ghi nhận
Mogi https://mogi.vn Thông tin bất động sản, nhà đất, mặt bằng tại Việt Nam Hỗ trợ môi giới mạnh mẽ; cập nhật thông tin liên tục; giao diện thân thiện, dễ sử dụng; nhiều tiện ích cá nhân; hỗ trợ đa ngôn ngữ; chuyên mục đánh giá thị trường ("Người trong giới nói gì").
Phongtro123 https://phongtro123.com Chuyên sâu về cho thuê phòng trọ, căn hộ, nhà nguyên căn, tìm người ở ghép Hỗ trợ môi giới tốt; cập nhật nhanh; phân loại danh mục tối ưu cho người thuê; giao diện thân thiện; tích hợp tính năng đăng tin tìm bạn ở ghép để chia sẻ chi phí; hỗ trợ đa ngôn ngữ.

Nguồn dữ liệu của đề tài bao gồm tài liệu chuyên ngành về công nghệ web, tài liệu hướng dẫn lập trình MERN Stack, kết hợp việc khảo sát thực trạng quy trình giao dịch cho thuê phòng trọ trên Internet.

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình tách biệt giữa giao diện máy khách và dịch vụ máy chủ, khai thác tối đa sức mạnh của ngăn xếp công nghệ MERN:

  • Kiến trúc và công nghệ: Phía Frontend được phát triển bằng ReactJS, cấu trúc dưới dạng các Component độc lập, sử dụng JSX để quản lý trạng thái hiển thị. Phía Backend được xây dựng bằng NodeJS kết hợp ExpressJS, tổ chức theo mô hình MVC, cung cấp các API xử lý logic nghiệp vụ và trao đổi dữ liệu với MongoDB.
  • Môi trường triển khai (Deployment): Mã nguồn Frontend của ứng dụng web được triển khai lên nền tảng đám mây Vercel; trong khi đó, toàn bộ mã nguồn Backend và hệ thống API được triển khai lưu trữ trên nền tảng Heroku. Tên miền truy cập thử nghiệm được ghi nhận trong các luồng vận hành là https://weeta-housing.
  • Cơ sở dữ liệu: Hệ thống thiết kế các tập tài liệu (collections) chính trong MongoDB, gồm bảng lưu trữ thông tin tài khoản người dùng (Table of Accounts) và bảng lưu trữ dữ liệu tin đăng cho thuê phòng (Table of Articles).
  • Phân quyền và tương tác người dùng: Hệ thống phân định 5 nhóm tác nhân (actors): Khách vãng lai (Guest), Người thuê nhà (Renter), Người cho thuê (The lease / Lessor), Quản lý hệ thống (System Management) và Quản trị hệ thống (System Administrator).
  • Cơ chế xác thực và nghiệp vụ đặc thù: Để trở thành chủ nhà cho thuê, tài khoản người dùng bắt buộc phải trải qua bước xác minh danh tính bằng số điện thoại thông qua mã xác thực một lần OTP. Quy trình đăng tin cho thuê phòng tích hợp việc lựa chọn các gói dịch vụ tin đăng và yêu cầu nhập thông tin thẻ ngân hàng để thanh toán trực tuyến. Ngoài ra, hệ thống tích hợp tính năng trò chuyện trực tuyến (messaging) giữa người thuê và chủ nhà, chức năng lưu tin trọ vào danh sách quan tâm thông qua biểu tượng trái tim, cùng phân hệ quản trị thống kê doanh thu và duyệt tin đăng.

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

Chương 1: Tổng quan đề tài (Chapter 1. Overview of the topic)

Chương 1 trình bày tính cấp thiết của đề tài trong bối cảnh hồi phục sau dịch bệnh và tốc độ đô thị hóa nhanh chóng tại Thành phố Hồ Chí Minh. Tác giả chỉ rõ mục tiêu giải quyết hai bài toán lý thuyết và thực tiễn, phân tích phạm vi đối tượng phục vụ là người thuê trọ và người cho thuê. Bên cạnh việc xác định phương pháp nghiên cứu, chương này tiến hành phân tích chi tiết hai hệ thống website tham khảo thực tế tại Việt Nam là Mogi (mogi.vn) và Phongtro123 (phongtro123.com), làm rõ các ưu điểm về giao diện, tính năng hỗ trợ môi giới, tiện ích cá nhân hóa và tính năng đăng tin tìm bạn cùng phòng. Cuối chương, nhóm tác giả liệt kê kết quả dự kiến đạt được và phân định khung chức năng tổng quát cho 5 nhóm tác nhân: Khách (tìm kiếm phòng), Người thuê trọ (tìm kiếm, quản lý tài khoản, đánh giá phòng, nhắn tin chủ nhà), Người cho thuê (đăng ký làm chủ trọ, đăng tin, quản lý tin, xem thống kê, mua gói thành viên, mua gói dịch vụ đăng tin), Quản lý hệ thống (duyệt tài khoản người cho thuê, duyệt/xóa tin đăng, quản lý gói dịch vụ đăng tin, quản lý gói thành viên, quản lý người dùng, quản lý doanh thu, xem thống kê) và Quản trị hệ thống (quản lý danh sách người dùng, xóa/khóa/mở khóa tài khoản, cấp quyền tài khoản quản lý hệ thống).

Chương 2: Cơ sở lý thuyết - Mô hình kiến trúc MERN Stack (Chapter 2. Theoretical basics / Architectural model MERN Stack)

Chương 2 tập trung luận giải chuyên sâu về mặt kỹ thuật của từng thành phần cấu thành kiến trúc MERN Stack.

  • Về MongoDB, tác giả phân tích khái niệm Database, Collection và Document (định dạng BSON); so sánh ưu thế của NoSQL so với RDBMS nhờ đặc tính phi cấu trúc (schema-less), không dùng lệnh JOIN phức tạp, khả năng tự động phân mảnh (automatic sharding) và tốc độ truy xuất nhanh nhờ lưu trữ trên bộ nhớ trong.
  • Về ExpressJS, chương nêu rõ vai trò middleware, hỗ trợ kiến trúc MVC, cơ chế định tuyến (routing) nâng cao, các công cụ tạo mẫu (templates) phía máy chủ và khả năng khoanh vùng lỗi hỗ trợ gỡ lỗi (debugging).
  • Về ReactJS, tác giả giải thích vai trò tầng View trong mô hình MVC, tính ưu việt của cơ chế DOM ảo (Virtual DOM) giúp tránh cập nhật lại toàn bộ cây DOM thực tế, cú pháp JSX kết hợp giữa HTML và JavaScript, cùng cấu trúc thành phần (components) cho phép tái sử dụng mã nguồn.
  • Về NodeJS, chương làm rõ cơ chế runtime trên nền V8 Engine, nguyên lý hoạt động đơn luồng kết hợp non-blocking I/O giúp xử lý hàng vạn kết nối đồng thời mà không chiếm dụng nhiều bộ nhớ RAM như mô hình đa luồng truyền thống. Chương cũng chỉ ra nhược điểm của Node.js khi xử lý các tác vụ tiêu tốn nhiều tài nguyên tính toán của CPU (CPU-intensive applications).

Chương 3: Mô hình hóa yêu cầu và phân tích thiết kế hệ thống (Chapter 3. Requirement modeling / System analysis and design)

Chương 3 là phần trọng tâm về kỹ thuật phần mềm, bao gồm bảng mô hình hóa yêu cầu chức năng (Requirement Modeling) cho 5 tác nhân, sơ đồ Use Case tổng quát (General Usecase Diagram) và các sơ đồ Use Case chi tiết: đăng ký tài khoản, đăng nhập, quên mật khẩu, xem trang chủ, tìm kiếm phòng trọ, xem chi tiết tin, đánh giá phòng, lưu tin, đăng ký làm người cho thuê, quản lý tin đăng (tạo, chỉnh sửa, ẩn, xóa tin), quản lý giao dịch thanh toán, quản lý tài khoản, mua gói thành viên, nhắn tin và xem thống kê.

Mỗi ca sử dụng đều được tác giả xây dựng bảng đặc tả chi tiết gồm mục đích, tác nhân kích hoạt, điều kiện tiên quyết và trình tự các bước thực hiện trên giao diện https://weeta-housing. Tiếp theo, chương cung cấp hệ thống sơ đồ tuần tự (Sequence Diagram) mô tả luồng thông điệp giữa Actor, Boundary, Controller, Model và Database cho các nghiệp vụ: đăng ký, đăng nhập, quên mật khẩu, tìm kiếm, xem chi tiết, đánh giá, lưu tin, tạo/sửa/xóa tin đăng, duyệt tin đăng, duyệt tài khoản người cho thuê và thanh toán thẻ ngân hàng.

Về thiết kế dữ liệu và giao diện, chương trình bày sơ đồ thiết kế cơ sở dữ liệu (Database design diagram) với hai cấu trúc trọng tâm là bảng tài khoản (Table of Accounts) và bảng tin bài (Table of Articles), đi kèm thiết kế và mô tả chi tiết của hàng loạt màn hình chức năng: trang chủ, tìm kiếm có bộ lọc (giá, diện tích), trang chi tiết, hộp thoại tin nhắn, danh sách tin đã lưu, cập nhật thông tin cá nhân, đổi mật khẩu, xác thực OTP số điện thoại, đăng tin mới kèm xem trước (preview), trang thanh toán, bảng quản lý gói thành viên, lịch sử giao dịch và các giao diện quản trị (danh sách người thuê, danh sách chủ nhà chờ duyệt, danh sách tin đăng chờ duyệt, giao diện quản lý doanh thu và thống kê số liệu).

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

Khóa luận đã hoàn thành các mục tiêu nghiên cứu và hiện thực hóa sản phẩm phần mềm theo đúng kế hoạch đề ra:

  • Kết quả thực nghiệm: Xây dựng thành công ứng dụng web kết nối thông tin nhà trọ hoàn chỉnh, đưa vào vận hành thử nghiệm trên môi trường trực tuyến với địa chỉ kiểm thử https://weeta-housing. Sản phẩm được cấu trúc hóa rõ ràng với Frontend lưu trữ và phục vụ qua Vercel, Backend và dịch vụ cơ sở dữ liệu xử lý thông qua Heroku.
  • Chức năng nghiệp vụ hoàn chỉnh: Đáp ứng đầy đủ các phân hệ chức năng cho 5 nhóm đối tượng người dùng, bao gồm:
    • Công cụ tìm kiếm và bộ lọc tin đăng theo từ khóa, mức giá, diện tích;
    • Hệ thống tương tác trực tiếp: đánh giá chất lượng phòng trọ, gửi tin nhắn theo thời gian thực giữa người thuê và chủ nhà;
    • Cơ chế bảo mật và quản lý tài khoản: đăng nhập, lấy lại mật khẩu qua Gmail, xác thực số điện thoại chủ nhà bằng mã OTP;
    • Mô hình kinh doanh dịch vụ tin đăng: phân loại gói thành viên, gói dịch vụ đăng tin và tích hợp quy trình thanh toán thẻ ngân hàng;
    • Phân hệ quản trị toàn diện: hỗ trợ kiểm duyệt thông tin phòng trọ trước khi hiển thị công khai, phê duyệt tài khoản chủ nhà, khóa/mở khóa người dùng, giám sát biểu đồ doanh thu và báo cáo thống kê hệ thống.
  • Đóng góp của đề tài: Tác giả đã số hóa thành công quy trình tìm kiếm và cho thuê nhà trọ truyền thống, thay thế các hình thức thủ công kém hiệu quả (như phát tờ rơi hay phụ thuộc môi giới trực tiếp) bằng một nền tảng trực tuyến thống nhất. Khóa luận cũng chứng minh tính khả thi, hiệu năng vận hành và khả năng mở rộng của ngăn xếp công nghệ MERN Stack trong việc xây dựng các ứng dụng web thương mại điện tử - dịch vụ có lượng người dùng truy cập đồng thời lớn.

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

Dựa trên các phân tích kỹ thuật và nội dung được nhóm tác giả ghi nhận trong văn bản, đề tài tồn tại một số hạn chế và hướng mở như sau:

  • Hạn chế về nền tảng công nghệ: Như đã chỉ ra trong phần đánh giá công nghệ NodeJS ở Chương 2, do Node.js vận hành dựa trên cơ chế đơn luồng và phải qua quá trình biên dịch mã nguồn, hệ thống sẽ gặp hạn chế về mặt tài nguyên và thời gian phản hồi nếu phải xử lý các tác vụ chuyên sâu đòi hỏi nhiều năng lực tính toán của CPU (CPU-intensive).
  • Khó khăn trong quá trình triển khai: Tác giả đã ghi nhận mục khó khăn trong quá trình thực hiện đề tài (Difficulty in implementation process) do hạn chế về kinh nghiệm thực tế và kiến thức chuyên sâu trong quá trình khảo sát, triển khai các luồng nghiệp vụ thực tế.
  • Hướng phát triển tiếp theo: Nhóm tác giả định hướng nâng cấp mã nguồn, tối ưu hóa giao diện người dùng và tiếp tục mở rộng, tích hợp thêm các tính năng mới trong tương lai nhằm nâng cao chất lượng dịch vụ trên nền tảng.

Giá trị tham khảo

Báo cáo khóa luận tốt nghiệp này mang lại giá trị tham khảo hữu ích cho các đối tượng sau:

  • Sinh viên chuyên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Là tài liệu tham khảo hoàn chỉnh về quy trình xây dựng đồ án tốt nghiệp ứng dụng web, từ khâu khảo sát bối cảnh, mô hình hóa yêu cầu, xây dựng tài liệu thiết kế kỹ thuật đến triển khai thực tế.
  • Lập trình viên nghiên cứu MERN Stack: Cung cấp tài liệu tổng quan và phân tích kỹ thuật về cách kết hợp bốn công nghệ MongoDB, ExpressJS, ReactJS và NodeJS, kèm theo giải pháp triển khai phân tách hệ thống lên các nền tảng đám mây Vercel và Heroku.
  • Người làm nghiên cứu hoặc phát triển dự án bất động sản trực tuyến: Các sơ đồ Use Case, sơ đồ tuần tự (Sequence Diagram), bảng đặc tả ca sử dụng và thiết kế cơ sở dữ liệu (Table of Accounts, Table of Articles) trong Chương 3 là khuôn mẫu thực tế có thể kế thừa trực tiếp khi phân tích thiết kế các hệ thống đăng tin và giao dịch trực tuyến tương tự.

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

1. Khóa luận lựa chọn ngăn xếp công nghệ nào để phát triển hệ thống và triển khai trên các nền tảng máy chủ nào?
Khóa luận sử dụng kiến trúc MERN Stack bao gồm 4 công nghệ: MongoDB (cơ sở dữ liệu NoSQL), ExpressJS (framework backend middleware), ReactJS (thư viện giao diện frontend) và NodeJS (môi trường thực thi JavaScript phía máy chủ). Mã nguồn Frontend được triển khai trên nền tảng Vercel, còn Backend được triển khai trên Heroku.

2. Nhóm tác giả đã khảo sát những website thực tế nào để phục vụ thiết kế hệ thống?
Nhóm nghiên cứu đã phân tích hai website tìm kiếm bất động sản và phòng trọ thực tế tại Việt Nam gồm Mogi (https://mogi.vn) và Phongtro123 (https://phongtro123.com), kế thừa các ưu điểm về hỗ trợ môi giới, giao diện thân thiện, tính năng cập nhật liên tục và cơ chế đăng tin tìm bạn cùng phòng.

3. Để đăng ký trở thành người cho thuê (chủ nhà), người dùng phải thực hiện quy trình xác thực nào?
Theo đặc tả ca sử dụng trong Chương 3, người dùng sau khi đăng nhập tài khoản thông thường cần chọn mục đăng ký làm người cho thuê, nhập số điện thoại để nhận mã xác thực một lần OTP, sau đó nhập mã OTP vào trang xác thực để hoàn tất quá trình kích hoạt tài khoản chủ trọ.

4. Hệ thống hỗ trợ những mô hình dịch vụ thanh toán nào cho người cho thuê?
Người cho thuê có thể mua hai loại dịch vụ thông qua hình thức thanh toán thẻ ngân hàng: "Gói thành viên" (mua để tăng số lượng bài đăng được phép trong 1 tháng) và "Gói dịch vụ đăng tin" (lựa chọn khi tạo mới một tin đăng cho thuê phòng).

5. Hệ thống phân chia quyền hạn quản lý cho những nhóm tác nhân nào?
Hệ thống thiết lập 5 nhóm tác nhân riêng biệt gồm: Khách vãng lai (Guest), Người thuê nhà (Renter), Người cho thuê (The lease / Lessor), Quản lý hệ thống (System Management - duyệt tin, duyệt tài khoản chủ trọ, quản lý các gói dịch vụ, xem thống kê, quản lý người dùng, quản lý doanh thu) và Quản trị hệ thống (System Administrator - quản lý danh sách người dùng, xóa/khóa/mở khóa tài khoản, phân quyền cấp tài khoản cho người quản lý hệ thống).

Kết luận

Khóa luận tốt nghiệp của sinh viên Nguyễn Thị Như Quỳnh và Huỳnh Thanh Tâm đã giải quyết thành công bài toán số hóa quy trình tìm kiếm và đăng tin cho thuê phòng trọ tại các đô thị lớn như Thành phố Hồ Chí Minh. Bằng việc ứng dụng mô hình kiến trúc MERN Stack và quy trình công nghệ phần mềm chuẩn mực, đề tài đã thiết kế và triển khai một hệ thống web dịch vụ đa tác nhân hoàn chỉnh trên hạ tầng đám mây Vercel và Heroku. Toàn bộ tài liệu phân tích nghiệp vụ, ca sử dụng và kiến trúc dữ liệu được trình bày chi tiết, tạo tiền đề vững chắc cho việc bảo trì và nâng cấp các tính năng mở rộng trong tương lai.