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

Trong bối cảnh đô thị hóa và phát triển kinh tế - xã hội, các thành phố lớn tập trung một lượng lớn sinh viên, công nhân lao động và các hộ gia đình đến sinh sống, học tập và làm việc. Thực trạng này dẫn đến nhu cầu tìm kiếm nhà ở, phòng trọ cho thuê ngày càng gia tăng. Phương thức tìm kiếm phòng trọ truyền thống đòi hỏi người thuê phải trực tiếp di chuyển, khảo sát thực địa, gây tốn kém thời gian và công sức. Mặc dù trên thị trường đã xuất hiện một số nền tảng hỗ trợ như chotot hay phongtro123.com, việc xây dựng các hệ thống chuyên biệt, tối ưu hóa quy trình tìm kiếm và quản lý thông tin bất động sản cho thuê vẫn là một yêu cầu thực tiễn trong lĩnh vực công nghệ phần mềm.

Đề tài "Báo cáo đồ án môn học: Xây dựng website hỗ trợ tìm kiếm phòng trọ" được thực hiện bởi nhóm sinh viên Phan Hoàng Hạc và Nguyễn Quốc Dũng, thuộc chuyên ngành Công nghệ phần mềm, ngành Công nghệ thông tin, Trường Đại học Công nghệ TP.HCM (HUTECH), dưới sự hướng dẫn của giảng viên Bùi Phú Khuyên (hoàn thành vào ngày 19 tháng 6 năm 2022 tại TP. Thủ Đức).

Mục tiêu và nhiệm vụ nghiên cứu của đề tài được xác định cụ thể như sau:

  1. Tìm hiểu đúng phương pháp thực hiện một đề tài công nghệ thông tin theo quy chuẩn học thuật và kỹ thuật phần mềm.
  2. Xác định đối tượng phục vụ trọng tâm là người dùng có nhu cầu thuê và cho thuê bất động sản.
  3. Xác định phạm vi giới hạn của hệ thống: tập trung hỗ trợ tìm kiếm và quản lý các loại hình phòng trọ, nhà ở và văn phòng cho thuê.
  4. Nghiên cứu quy trình triển khai và xây dựng hoàn chỉnh một hệ thống ứng dụng web từ khâu phân tích, thiết kế đến lập trình và kiểm thử.
  5. Thiết kế kiến trúc website có khả năng bảo trì, kiểm tra, cải tiến và nâng cấp thuận tiện khi có lỗi phát sinh.

Phân công nhiệm vụ trong nhóm tác giả được thiết lập theo bảng phân nhiệm:

Họ và tên sinh viên Mã số sinh viên Lớp sinh hoạt Nhiệm vụ thực hiện
Phan Hoàng Hạc (Nhóm trưởng) 1911064776 19DTHD2 Thiết kế phần mềm, lên ý tưởng, tìm hiểu ngôn ngữ, công nghệ, môi trường phát triển (IDE), cơ sở dữ liệu, hỗ trợ viết báo cáo.
Nguyễn Quốc Dũng 1911065749 19DTHD2 Hỗ trợ thiết kế phần mềm, hỗ trợ thiết kế giao diện người dùng, viết và trình bày báo cáo.

Cơ sở lý thuyết và công nghệ áp dụng

Đề tài xây dựng hệ thống phần mềm dựa trên kiến trúc phân tách Client - Server, sử dụng hệ sinh thái JavaScript từ giao diện đến máy chủ và cơ sở dữ liệu NoSQL:

  • Ngôn ngữ lập trình JavaScript: Đóng vai trò cốt lõi trong toàn bộ hệ thống. JavaScript được tích hợp nhúng vào HTML ở phía máy khách (Client-side Script) và thực thi trên môi trường máy chủ (Server-side) thông qua Node.js để tạo nên các trang web động.
  • Môi trường phát triển tích hợp (IDE) Visual Studio Code: Công cụ soạn thảo mã nguồn do Microsoft phát triển, hỗ trợ gỡ lỗi (Debug), tích hợp hệ thống quản lý phiên bản Git, tô sáng cú pháp (Syntax Highlighting), tự động hoàn thành mã nguồn thông minh (IntelliSense) và hệ thống Snippets.
  • Môi trường thực thi Node.js: Nền tảng xây dựng trên JavaScript runtime V8 engine của Google (được phát triển bởi Ryan Dahl vào năm 2009), chuyển đổi mã JavaScript thành mã máy (bytecode) nhằm tối ưu tốc độ thực thi, hỗ trợ cơ chế xử lý giao tiếp thời gian thực (Realtime).
  • Web Framework Express.js: Framework chạy trên nền Node.js, cung cấp hệ thống định tuyến (routing) mạnh mẽ, các cơ chế trung gian (middleware), hỗ trợ xây dựng giao diện lập trình ứng dụng RESTful API và quản lý luồng dữ liệu an toàn.
  • Thư viện giao diện ReactJS: Thư viện JavaScript phía Client hỗ trợ xây dựng giao diện người dùng theo mô hình thành phần (Component-based), giúp tối ưu hiệu năng render và tương tác người dùng.
  • Hệ quản trị cơ sở dữ liệu MongoDB: Cơ sở dữ liệu NoSQL mã nguồn mở, lưu trữ dữ liệu dưới dạng tài liệu (Document) theo định dạng BSON (tương tự JSON) cấu thành từ các cặp khóa - giá trị (Key - Value), tổ chức theo các bộ sưu tập (Collections).
  • Thư viện Mongoose (ODM): Đóng vai trò mô hình hóa đối tượng dữ liệu cho MongoDB trong Node.js, quản lý Schema, thực hiện kiểm tra tính hợp lệ của dữ liệu (Validation), xử lý các thao tác truy vấn và thao tác dữ liệu (CRUD).

Phân tích yêu cầu và mô hình hóa hệ thống

1. Phân tích yêu cầu phi chức năng và môi trường vận hành

Tài liệu xác lập các chỉ số kỹ thuật và điều kiện ràng buộc đối với hệ thống phần mềm:

  • Yêu cầu tốc độ: Thời gian khởi động hệ thống dao động từ 3 đến 10 giây tùy thuộc vào cấu hình thiết bị. Sau khi người dùng đăng nhập, 100% các thao tác xử lý nghiệp vụ phải hoàn tất trong thời gian không quá 10 giây; hệ thống hỗ trợ phản hồi nhanh và cho phép đăng tải nhiều bài viết cùng lúc.
  • Yêu cầu bảo mật: Xác định môi trường bảo mật, phân quyền dữ liệu giữa người dùng thông thường và quản trị viên, kiểm soát lỗi đăng nhập và bảo vệ dữ liệu tài khoản.
  • Yêu cầu phần cứng và môi trường triển khai:
Mức độ cấu hình Bộ vi xử lý (CPU) Bộ nhớ trong (RAM) Dung lượng ổ cứng (Ổ C) Hệ điều hành
Cấu hình tối thiểu Intel Core i3 hoặc AMD Ryzen 3 trở lên $\ge$ 1 GB Trống tối thiểu 1 GB Windows 7 / 8 / 10
Cấu hình tối ưu Intel Core i5 (chip H / HQ) hoặc AMD Ryzen 5 trở lên $\ge$ 4 GB Trống tối thiểu 1 GB Windows 7 / 8 / 10

2. Mô hình hóa chức năng và đối tượng sử dụng

Hệ thống xác định 3 tác nhân chính tham gia tương tác:

  • Khách vãng lai (Guest): Xem danh sách bài đăng, lọc phòng trọ theo danh mục/tiêu chí, tìm kiếm theo từ khóa, xem chi tiết bài đăng, gửi thông tin liên hệ/trợ giúp đến quản trị viên.
  • Người dùng đã đăng ký (User): Đăng nhập, đăng xuất, quản lý thông tin cá nhân, đổi mật khẩu, đăng tin phòng trọ mới, xem danh sách bài đăng cá nhân, cập nhật hoặc xóa bài đăng thuộc sở hữu của mình.
  • Quản trị viên (Admin): Quản lý toàn bộ danh sách người dùng (thêm, cập nhật, xóa tài khoản); quản lý danh mục loại phòng (thêm, sửa, xóa loại phòng); kiểm duyệt và quản lý tất cả các bài đăng trên toàn hệ thống (bao gồm quyền xóa bài đăng của người dùng khác); tiếp nhận thông tin phản hồi từ trang liên hệ.

Đặc tả luồng sự kiện chính và phụ của các Use Case trọng yếu được thiết lập cụ thể:

Tên Use Case Tác nhân chính Luồng sự kiện chính Luồng sự kiện phụ / Ràng buộc
Đăng ký, Đăng nhập Khách / Người dùng Người dùng nhập thông tin xác thực; hệ thống kiểm tra tính hợp lệ của dữ liệu và cấp quyền truy cập. Báo lỗi nếu thiếu trường bắt buộc; báo lỗi khi sai thông tin; từ chối đăng ký nếu username hoặc email đã tồn tại trong CSDL.
Quản lý tài khoản Quản trị viên (Admin) Admin chọn chức năng quản lý người dùng; hệ thống hiển thị danh sách; Admin thực hiện thêm mới, cập nhật hoặc xóa người dùng. Thao tác xóa tài khoản người dùng sẽ đồng thời xóa toàn bộ thông tin và dữ liệu liên kết của người dùng đó.
Quản lý loại phòng Quản trị viên (Admin) Admin truy cập danh mục loại phòng; hệ thống hiển thị dữ liệu; Admin thực hiện thêm, cập nhật hoặc xóa loại phòng. Xóa loại phòng đồng nghĩa với việc xóa toàn bộ dữ liệu cấu hình liên quan đến loại phòng đó.
Quản lý bài đăng Admin / Người dùng Người dùng thao tác với bài đăng cá nhân; Admin thao tác với toàn bộ bài đăng trên hệ thống (Thêm, Cập nhật, Xóa). Người dùng chỉ có quyền chỉnh sửa/xóa bài do mình tạo; Admin có toàn quyền xóa bài của bất kỳ thành viên nào.

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

1. Thiết kế cơ sở dữ liệu MongoDB

Cơ sở dữ liệu của hệ thống được tổ chức thành 3 bộ sưu tập (Collection) chính với các thuộc tính và kiểu dữ liệu được mô hình hóa qua Mongoose:

Bảng Category (Danh mục loại phòng)

STT Thuộc tính Kiểu dữ liệu Ý nghĩa và ràng buộc
1 ObjectId ObjectId Mã định danh loại phòng (khóa chính, tự động tạo).
2 name String Tên loại phòng (nhà trọ, căn hộ, văn phòng...).
3 type String Phân loại danh mục.
4 img String Đường dẫn tệp hình ảnh đại diện danh mục.
5 rooms String Array Mảng lưu trữ danh sách các ObjectId của các phòng thuộc danh mục.
6 featured Boolean Đánh dấu trạng thái danh mục nổi bật/tiêu biểu.

Bảng Users (Tài khoản người dùng)

STT Thuộc tính Kiểu dữ liệu Ý nghĩa và ràng buộc
1 ObjectId ObjectId Mã định danh người dùng (khóa chính, tự động tạo).
2 username String Tên đăng nhập hệ thống (duy nhất).
3 password String Mật khẩu tài khoản người dùng.
4 firstName String Họ và tên đệm của người dùng.
5 lastName String Tên của người dùng.
6 email String Địa chỉ thư điện tử (xxxxx@Gmail.com, duy nhất).
7 address String Địa chỉ liên hệ của người dùng.
8 phone String Số điện thoại liên lạc.
9 img String Đường dẫn hình ảnh đại diện (avatar).
10 isAdmin Boolean Cờ phân quyền (true: Quản trị viên, false: Người dùng).
11 roomsUser String Array Mảng lưu trữ danh sách các ObjectId phòng trọ do người dùng sở hữu.

Bảng Room (Thông tin phòng cho thuê)

STT Thuộc tính Kiểu dữ liệu Ý nghĩa và ràng buộc
1 ObjectId ObjectId Mã định danh phòng trọ (khóa chính, tự động tạo).
2 title String Tiêu đề bài đăng cho thuê.
3 username String Tên người dùng tạo bài đăng.
4 price Number Mức giá cho thuê (VNĐ).
5 address String Địa chỉ chi tiết của phòng trọ.
6 status String Trạng thái hiện tại của phòng (còn trống, đã thuê).
7 maxPeople Number Số lượng người ở tối đa cho phép.
8 area Number Diện tích phòng trọ ($m^2$).
9 desc String Nội dung mô tả chi tiết về phòng trọ và tiện ích.
10 photos String Array Mảng lưu trữ danh sách các đường dẫn hình ảnh phòng.
11 rating Number Điểm số đánh giá từ người dùng.
12 bestChoice Boolean Đánh dấu bài đăng được ưu tiên hiển thị.
13 type String Loại hình phòng thuê.
14 categoryid ObjectId Khóa ngoại tham chiếu đến ObjectId của bảng Category.
15 userid ObjectId Khóa ngoại tham chiếu đến ObjectId của bảng Users.

2. Thiết kế giao diện và quy trình xử lý nghiệp vụ

Giao diện ứng dụng được tổ chức khoa học với các module chức năng chuyên biệt:

  • Thanh điều hướng (Navbar) và Trang chủ: Tích hợp logo, các menu điều hướng gồm Rooms (tất cả các phòng), Contacts (liên hệ quản trị), Setting (tùy chọn đăng bài, bài đăng của tôi, thông tin cá nhân). Hệ thống tự động kiểm tra trạng thái đăng nhập: nếu tài khoản có quyền isAdmin = true, menu Admin Pages sẽ xuất hiện; đối với tài khoản người dùng thông thường, menu này bị ẩn. Khi đăng nhập thành công, hệ thống hiển thị tên người dùng và nút Đăng xuất. Trang chủ đồng thời trình bày các danh mục chính và khu vực bài đăng khuyến nghị.
  • Trang Danh mục (Category View): Khi người dùng chọn một loại danh mục, hệ thống sẽ truy vấn và hiển thị danh sách các phòng thuê tương ứng, áp dụng cơ chế phân trang với giới hạn hiển thị tối đa 3 bài đăng trên mỗi trang.
  • Trang Danh sách phòng thuê (Rooms View) và Bộ lọc: Cung cấp công cụ lọc đa tiêu chí (lọc đơn tùy chọn hoặc kết hợp nhiều tùy chọn). Nút chức năng Làm mới (Refresh) cho phép hoàn nguyên bộ lọc và tải lại danh sách ban đầu. Cơ chế phân trang tự động đếm tổng số lượng bản ghi để phân chia số trang hiển thị.
  • Trang Liên hệ (Contacts): Yêu cầu người dùng điền đầy đủ 3 trường thông tin bắt buộc: Họ tên, Email và Nội dung liên hệ (nút gửi chỉ được kích hoạt khi điền đủ dữ liệu). Khi gửi thành công, hệ thống hiển thị thông báo phản hồi và lưu thông tin vào hộp thư quản trị của Admin.
  • Module Tìm kiếm trực tiếp: Cho phép tra cứu nhanh theo tiêu đề và loại phòng thuê ngay tại trang chủ. Kết quả phù hợp hiển thị tức thì dưới thanh tìm kiếm; người dùng có thể nhấp chọn Details để xem chi tiết bài đăng hoặc nhấn nút Close / xóa từ khóa để đóng khung kết quả.
  • Trang Chi tiết bài đăng: Hiển thị toàn bộ thông số, mô tả, hình ảnh và danh tính người đăng. Chức năng xem chi tiết không yêu cầu đăng nhập. Tuy nhiên, hệ thống tích hợp cơ chế kiểm tra quyền sở hữu: chỉ khi người đăng bài đang đăng nhập đúng tài khoản đó thì các nút Cập nhật và Xóa mới hiển thị.
  • Khu vực quản lý thành viên (User Dashboard): Yêu cầu người dùng phải đăng nhập. Cung cấp biểu mẫu tạo bài đăng mới (bắt buộc điền đủ các trường dữ liệu và tải lên hình ảnh), danh sách các bài đăng cá nhân (áp dụng phân trang tối đa 2 bài/trang) và giao diện cập nhật thông tin cá nhân.
  • Trang Xác thực (Đăng nhập / Đăng ký): Tích hợp hộp thoại thông báo lỗi khi không tìm thấy người dùng, thông báo sai tài khoản/mật khẩu, hoặc cảnh báo khi đăng ký bằng username / email đã tồn tại trong cơ sở dữ liệu.
  • Khu vực Quản trị hệ thống (Admin Pages): Kiểm soát truy cập nghiêm ngặt. Cung cấp bảng điều khiển quản lý người dùng (CRUD tài khoản), quản lý danh mục (CRUD category), và quản trị tin đăng (CRUD tất cả các phòng trên hệ thống, bao gồm quyền xóa bài đăng vi phạm của người dùng khác).
  • Điều hướng và xử lý ngoại lệ (Error Handling): Xây dựng các trang giao diện thông báo lỗi khi người dùng nhập sai đường dẫn điều hướng, trang lỗi 404 không tìm thấy tài nguyên, và trang chặn truy cập trái phép khi tài khoản người dùng thường cố tình truy cập vào trang quản trị Admin.

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

CHƯƠNG 1 : TỔNG QUAN

Chương 1 làm rõ lý do lựa chọn đề tài xuất phát từ nhu cầu thực tiễn của người lao động và sinh viên tại các đô thị lớn. Chương này xác định mục tiêu xây dựng một ứng dụng web dễ bảo trì, nâng cấp và xác lập phạm vi hỗ trợ tìm kiếm phòng trọ, nhà ở, văn phòng. Phân công công việc giữa hai thành viên nhóm được trình bày chi tiết. Bên cạnh đó, tác giả giới thiệu tổng quan về các công nghệ được sử dụng bao gồm: ngôn ngữ lập trình JavaScript (lịch sử phát triển từ Mocha, LiveScript đến các tiêu chuẩn ECMAScript và mức độ phổ biến), trình biên tập mã nguồn Visual Studio Code, nền tảng Node.js (cơ chế biên dịch V8 Engine và tính năng xử lý thời gian thực), framework Express.js, hệ quản trị cơ sở dữ liệu MongoDB và công cụ mô hình hóa dữ liệu Mongoose.

CHƯƠNG 2 : TÁC PHÂN TÍCH VÀ ĐẶC TẢ YÊU CẦU

Chương 2 trình bày quy trình phân tích và đặc tả hệ thống toàn diện. Tác giả tiến hành phân tích phạm vi dự án, mở rộng yêu cầu nghiệp vụ, phân tích yêu cầu bảo mật, tốc độ phản hồi (khởi động 3-10 giây, xử lý tác vụ dưới 10 giây), điều kiện vận hành phần cứng (tối thiểu và tối ưu) và yêu cầu tích hợp CSDL. Phần xác định yêu cầu phân tách rõ yêu cầu chức năng (đăng bài, tìm kiếm, quản lý thông tin, phân quyền Admin - User) và yêu cầu phi chức năng (tính tiện dụng, tính tương thích, tính bảo trì). Về mặt mô hình hóa, chương 2 cung cấp sơ đồ ngữ cảnh hệ thống, biểu đồ Use Case tổng quát, các biểu đồ Use Case chi tiết kèm bảng đặc tả (Đăng nhập/Đăng ký, Quản lý tài khoản, Quản lý loại phòng, Quản lý bài đăng), sơ đồ chức năng (BFD), mô hình sơ đồ lớp và thiết kế cấu trúc 3 bảng cơ sở dữ liệu: Category, Users và Room.

CHƯƠNG 3: THIẾT KẾ PHẦN MỀM

Chương 3 tập trung mô tả chi tiết thiết kế giao diện và luồng tương tác của ứng dụng web thông qua hệ thống 37 hình ảnh minh chứng. Nội dung bao quát toàn bộ các màn hình chức năng: Giao diện trang chủ (Navbar tùy biến theo vai trò, danh mục, bài đăng khuyến nghị), Giao diện danh mục (phân trang 3 bài/trang), Giao diện danh sách phòng thuê và bộ lọc đa tùy chọn, Giao diện liên hệ và gửi thông báo đến Admin, Giao diện tìm kiếm nhanh, Giao diện chi tiết bài đăng (kiểm soát quyền sửa/xóa theo chủ sở hữu), Giao diện chức năng người dùng (đăng bài mới, xem bài cá nhân phân trang 2 bài/trang, cập nhật hồ sơ), Giao diện đăng ký/đăng nhập kèm các hộp thoại kiểm tra ràng buộc CSDL, Giao diện quản trị Admin toàn quyền (User, Category, Room), và các màn hình xử lý ngoại lệ đường dẫn (sai điều hướng, 404, chặn quyền User truy cập Admin).

CHƯƠNG 4: TỔNG KẾT

Chương 4 tổng kết các kết quả đạt được của đề tài, thẳng thắn nhìn nhận những mặt hạn chế trong quá trình thực hiện do thời gian và kinh nghiệm lập trình còn giới hạn, đồng thời vạch ra các định hướng phát triển nhằm tối ưu hóa cơ sở dữ liệu, nâng cao bảo mật và mở rộng các nghiệp vụ tiện ích cho website trong tương lai.


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

  • Kết quả triển khai kỹ thuật:
    • Hoàn thiện website hỗ trợ tìm kiếm phòng trọ hoạt động trên nền tảng ReactJS kết hợp Node.js, Express và MongoDB.
    • Xây dựng thành công cơ chế phân quyền rõ ràng giữa hai nhóm người dùng: Quản trị viên (Admin) và Người dùng thông thường (User), cùng các chức năng xem/tìm kiếm dành cho Khách vãng lai.
    • Thiết kế và chuẩn hóa thành công cấu trúc cơ sở dữ liệu NoSQL gồm 3 Collection liên kết chặt chẽ thông qua các ObjectId: Category, Users, và Room.
    • Đáp ứng các chỉ số kỹ thuật về thời gian xử lý: 100% các thao tác sau đăng nhập được xử lý không quá 10 giây, thời gian tải trang đạt mức 3 đến 10 giây tùy cấu hình.
    • Xây dựng đầy đủ các chức năng quản lý bài đăng, bộ lọc tìm kiếm theo nhiều tùy chọn, gửi thông tin liên hệ và xử lý các ngoại lệ điều hướng/truy cập trái phép.
  • Đóng góp của đồ án:
    • Đóng góp một giải pháp phần mềm thử nghiệm cụ thể cho bài toán kết nối giữa người thuê và người cho thuê phòng trọ, hỗ trợ quá trình tìm kiếm nơi ở diễn ra thuận tiện thông qua môi trường trực tuyến.
    • Cung cấp tài liệu hoàn chỉnh về quy trình xây dựng đồ án cơ sở ngành Công nghệ phần mềm, bao gồm đầy đủ các bước từ thu thập đặc tả yêu cầu, mô hình hóa Use Case, thiết kế cơ sở dữ liệu NoSQL đến hiện thực hóa giao diện người dùng.

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

  • Hạn chế được tác giả ghi nhận:
    • Do thời gian thực hiện đề tài có hạn và sự hiểu biết về ngôn ngữ lập trình cũng như kinh nghiệm thực tế của nhóm sinh viên còn hạn chế, hệ thống khó tránh khỏi một số thiếu sót trong tối ưu mã nguồn và giao diện.
    • Phạm vi chức năng mới dừng lại ở các nghiệp vụ cơ bản (quản lý bài đăng, tìm kiếm, liên hệ, phân quyền tài khoản), chưa tích hợp các tiện ích nâng cao như thanh toán trực tuyến, bản đồ số định vị vị trí thực địa hoặc hệ thống tin nhắn tương tác trực tiếp.
  • Hướng phát triển:
    • Tái thiết kế và nâng cấp cơ sở dữ liệu dựa trên các kỹ thuật mới khi lưu lượng người dùng và khối lượng dữ liệu phát sinh lớn.
    • Xây dựng các tiện ích chuyển đổi dữ liệu riêng biệt để hỗ trợ truy xuất và di chuyển dữ liệu cũ sang các cấu trúc định dạng mới.
    • Nâng cấp cơ chế bảo mật phần mềm, cải thiện giao diện và mở rộng thêm các tính năng nghiệp vụ nhằm đáp ứng tốt hơn nhu cầu thực tế của người dùng và doanh nghiệp.

Giá trị tham khảo

Báo cáo đồ án môn học này mang lại giá trị tham khảo thiết thực cho:

  • Sinh viên ngành Công nghệ thông tin và Công nghệ phần mềm: Đặc biệt là sinh viên đang thực hiện đồ án cơ sở, đồ án chuyên ngành hoặc khóa luận tốt nghiệp cần tài liệu mẫu về cấu trúc trình bày báo cáo kỹ thuật phần mềm.
  • Người học lập trình Web Full-Stack: Tham khảo mô hình phân tích và hiện thực ứng dụng web sử dụng Stack công nghệ JavaScript (ReactJS, Node.js, Express.js, MongoDB và Mongoose).
  • Người phát triển đề tài tương tự: Cung cấp tài liệu tham khảo chi tiết về cách thiết kế bảng dữ liệu NoSQL (Schema), quy trình đặc tả Use Case, luồng phân quyền Admin/User và phương pháp xử lý kiểm soát ngoại lệ giao diện.

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

1. Hệ thống sử dụng ngăn xếp công nghệ (tech stack) cụ thể nào để phát triển?
Hệ thống được phát triển hoàn toàn trên nền tảng JavaScript: Phía Frontend sử dụng ReactJS; Phía Backend sử dụng Node.js kết hợp framework ExpressJS; Cơ sở dữ liệu sử dụng MongoDB quản lý thông qua thư viện Mongoose (ODM); Môi trường phát triển mã nguồn là Visual Studio Code (IDE).

2. Cơ sở dữ liệu của hệ thống gồm những bảng (collection) nào và liên kết với nhau ra sao?
Cơ sở dữ liệu gồm 3 bảng chính: Category (loại phòng), Users (người dùng) và Room (bài đăng phòng thuê). Bảng Room liên kết với Category thông qua trường categoryid (ObjectId) và liên kết với Users thông qua trường userid (ObjectId). Đồng thời, bảng Category và Users lưu trữ mảng các ObjectId của phòng (rooms và roomsUser) để phục vụ truy vấn hai chiều.

3. Cơ chế phân quyền giữa Quản trị viên (Admin) và Người dùng thường (User) được thiết kế như thế nào?
Phân quyền dựa trên trường dữ liệu isAdmin (Boolean) trong bảng Users. Người dùng thường chỉ có thể đăng bài, xem, cập nhật và xóa các bài đăng do chính mình tạo ra; menu Admin Pages bị ẩn. Quản trị viên (isAdmin = true) có quyền truy cập Admin Pages, quản lý toàn bộ tài khoản người dùng, thêm/sửa/xóa danh mục loại phòng và có toàn quyền kiểm duyệt, chỉnh sửa hoặc xóa bất kỳ bài đăng nào trên hệ thống.

4. Quy định phân trang trên các giao diện danh mục và bài đăng được thiết lập với số lượng bao nhiêu?
Theo đặc tả thiết kế giao diện tại Chương 3, giao diện danh mục hiển thị các phòng thuê thuộc loại tương ứng áp dụng phân trang tối đa 3 bài đăng trên một trang; trong khi đó, giao diện danh sách quản lý bài đăng cá nhân của người dùng áp dụng phân trang hiển thị tối đa 2 bài đăng trên một trang.

5. Hệ thống đặt ra những yêu cầu gì về cấu hình phần cứng và thời gian đáp ứng khi vận hành?
Hệ thống yêu cầu cấu hình tối thiểu là CPU Intel Core i3 hoặc AMD Ryzen 3, RAM $\ge$ 1 GB, ổ cứng trống tối thiểu 1 GB trên hệ điều hành Windows 7/8/10 (cấu hình tối ưu khuyến nghị CPU Core i5 chip H/HQ hoặc Ryzen 5, RAM $\ge$ 4 GB). Về hiệu năng, thời gian khởi động website từ 3 đến 10 giây và 100% các thao tác xử lý sau khi đăng nhập không được vượt quá 10 giây.


Kết luận

Đồ án môn học "Xây dựng website hỗ trợ tìm kiếm phòng trọ" của nhóm sinh viên Trường Đại học Công nghệ TP.HCM đã hoàn thành trọn vẹn quy trình xây dựng một ứng dụng web hướng đối tượng phục vụ nhu cầu xã hội thực tế. Báo cáo thể hiện sự chặt chẽ trong phương pháp tiếp cận kỹ thuật phần mềm, từ khâu khảo sát nghiệp vụ, phân tích yêu cầu, mô hình hóa Use Case, thiết kế cơ sở dữ liệu MongoDB đến lập trình giao diện bằng ReactJS và Node.js. Mặc dù còn những hạn chế nhất định về mặt kinh nghiệm và tính năng mở rộng, công trình đã xây dựng thành công một hệ thống phần mềm hoàn chỉnh, có tính ứng dụng cao và đóng vai trò là tài liệu tham khảo giá trị cho sinh viên chuyên ngành công nghệ thông tin.