I. Giới thiệu về Đồ án Tốt nghiệp Ứng dụng Tìm Nhà Trọ React Native
Ứng dụng tìm nhà trọ React Native là một đồ án tốt nghiệp được phát triển tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh, dưới hướng dẫn của ThS. Mai Tuấn Khôi. Đề tài này nhằm giải quyết bài toán tìm kiếm nhà trọ hiệu quả thông qua một ứng dụng mobile đa nền tảng. Nhóm tác giả gồm Phạm Thái Vĩnh (16110525) và Phùng Đạl Hiệp (16110331) đã thực hiện từ tháng 3 năm 2020 đến tháng 8 năm 2020. Dự án sử dụng React Native làm nền tảng chính, kết hợp với MERN stack (MongoDB, Express.js, React Native, Node.js) để xây dựng một giải pháp toàn diện. Mục tiêu là tạo ra một ứng dụng thân thiện với người dùng, giúp tìm kiếm nhà trọ một cách dễ dàng và nhanh chóng trên cả nền tảng iOS và Android.
1.1. Tính Cấp Thiết của Đề Tài
Hiện nay, nhu cầu tìm kiếm nhà trọ ngày càng gia tăng đặc biệt ở các thành phố lớn. Tuy nhiên, quy trình tìm kiếm truyền thống thường mất nhiều thời gian và công sức. Ứng dụng tìm nhà trọ React Native giải quyết vấn đề này bằng cách cung cấp một nền tảng tìm kiếm trực tuyến hiệu quả. Người dùng có thể dễ dàng tìm kiếm, lọc thông tin nhà trọ theo các tiêu chí như giá cả, vị trí, diện tích và tiện ích. Điều này làm cho quá trình tìm kiếm nhanh chóng, tiện lợi và tiết kiệm thời gian cho người sử dụng.
1.2. Mục Tiêu của Đề Tài
Mục tiêu chính của đồ án là xây dựng một ứng dụng mobile đa nền tảng sử dụng React Native để tìm kiếm nhà trọ. Cụ thể, ứng dụng cần hỗ trợ các chức năng: tìm kiếm nhà trọ theo vị trí, giá cả và tiện ích; hiển thị thông tin chi tiết về các căn phòng; quản lý yêu thích; và giao tiếp giữa người cho thuê và người tìm trọ. Ngoài ra, dự án cũng nhằm giúp sinh viên làm quen với các công nghệ hiện đại trong phát triển ứng dụng mobile.
II. Công Nghệ và Stack Lập Trình Sử Dụng
MERN stack là lựa chọn chính cho đồ án tốt nghiệp này, bao gồm bốn công nghệ mạnh mẽ: MongoDB cho cơ sở dữ liệu, Express.js cho backend, React Native cho giao diện ứng dụng mobile, và Node.js cho máy chủ backend. Sự kết hợp này cho phép phát triển một ứng dụng toàn diện và hiệu quả. React Native được chọn vì khả năng xây dựng ứng dụng đa nền tảng (iOS và Android) từ một codebase duy nhất, giúp tiết kiệm thời gian phát triển. Ngoài ra, dự án còn sử dụng Redux để quản lý trạng thái ứng dụng, Mongoose để tương tác với MongoDB, và các công cụ hỗ trợ khác. Thiết kế Restful API đảm bảo giao tiếp hiệu quả giữa frontend và backend.
2.1. Công Nghệ React Native và Ưu Điểm
React Native là một framework JavaScript được phát triển bởi Facebook, cho phép xây dựng ứng dụng native cho iOS và Android từ một codebase duy nhất. Ưu điểm của React Native bao gồm: giảm chi phí phát triển do sử dụng một ngôn ngữ duy nhất (JavaScript), tốc độ phát triển nhanh, cộng đồng hỗ trợ mạnh, và khả năng tái sử dụng code. Đối với dự án tìm nhà trọ, React Native cho phép tạo giao diện người dùng đáp ứng và trực quan trên cả hai nền tảng mobile chính.
2.2. Kiến Trúc Backend với Node.js và Express.js
Node.js cung cấp môi trường chạy JavaScript trên máy chủ, cho phép phát triển backend hiệu suất cao. Express.js là một framework web nhẹ và linh hoạt chạy trên Node.js, giúp xây dựng Restful API một cách nhanh chóng. Cơ sở dữ liệu MongoDB được sử dụng để lưu trữ dữ liệu nhà trọ, người dùng và thông tin liên quan. Mongoose được sử dụng để định nghĩa schema và tương tác với MongoDB, đảm bảo tính nhất quán dữ liệu.
III. Mô Hình Hóa Yêu Cầu và Thiết Kế Cơ Sở Dữ Liệu
Quá trình mô hình hóa yêu cầu là bước quan trọng trong phát triển ứng dụng tìm nhà trọ. Nhóm đã xác định các actor chính bao gồm khách vãng lai (Guest), người dùng đã đăng ký (User), người cho thuê (Landlord), và quản trị viên (Admin). Mỗi actor có các nghiệp vụ riêng như đăng ký tài khoản, đăng nhập, tìm kiếm nhà trọ, đăng tin cho thuê, quản lý bình luận và đánh giá. Thiết kế cơ sở dữ liệu sử dụng MongoDB với các collection chính bao gồm Users, Rooms, Comments, Ratings, và Bookmarks. Sơ đồ luồng dữ liệu (Data Flow Diagram) được sử dụng để mô tả chi tiết cách dữ liệu di chuyển qua các component của hệ thống, đảm bảo tất cả các yêu cầu được đáp ứng.
3.1. Các Actor và Nghiệp Vụ Chính
Hệ thống ứng dụng tìm nhà trọ có ba loại actor chính. Thứ nhất, Khách (Guest) có thể xem danh sách nhà trọ nhưng không thể thực hiện các thao tác nâng cao. Thứ hai, Người dùng (User) có thể đăng ký, đăng nhập, tìm kiếm nhà trọ, lưu yêu thích, và bình luận. Thứ ba, Người cho thuê (Landlord) có thể đăng tin cho thuê, quản lý phòng trọ, và trả lời bình luận. Mỗi nhóm actor có các use case riêng biệt được mô tả chi tiết trong tài liệu thiết kế.
3.2. Cơ Sở Dữ Liệu MongoDB và Cấu Trúc Collection
MongoDB là một cơ sở dữ liệu NoSQL được lựa chọn cho dự án này do tính linh hoạt và khả năng mở rộng. Các collection chính bao gồm: Users lưu trữ thông tin người dùng, Rooms lưu trữ thông tin nhà trọ, Comments lưu trữ bình luận từ người dùng, Ratings lưu trữ đánh giá, và Bookmarks lưu trữ danh sách yêu thích. Mỗi document có cấu trúc JSON linh hoạt, cho phép lưu trữ dữ liệu đa dạng và thích nghi với các thay đổi yêu cầu.
IV. Quá Trình Phát Triển và Kiểm Thử Ứng Dụng
Quá trình phát triển ứng dụng tìm nhà trọ React Native được chia thành các giai đoạn rõ ràng: khảo sát hiện trạng, thiết kế prototype, thiết kế giao diện, xây dựng backend API, và kiểm thử. Nhóm đã dành khoảng 4 tuần để tìm hiểu về React Native, Redux, và MongoDB. Tiếp theo, họ xây dựng giao diện ứng dụng sử dụng React Native và quản lý trạng thái bằng Redux. Sau đó, họ phát triển các Restful API sử dụng Node.js, Express.js, và Mongoose. Cuối cùng, quá trình kiểm thử được thực hiện để đảm bảo chức năng hoạt động đúng. Kế hoạch kiểm thử bao gồm kiểm thử chức năng, kiểm thử hiệu suất, và kiểm thử bảo mật.
4.1. Thiết Kế Giao Diện và Xử Lý Nghiệp Vụ
Giao diện người dùng là yếu tố quan trọng trong ứng dụng mobile. Nhóm đã thiết kế các màn hình chính bao gồm: màn hình đăng nhập/đăng ký, màn hình tìm kiếm nhà trọ, màn hình chi tiết phòng trọ, màn hình yêu thích, và màn hình quản lý tài khoản. Mỗi màn hình được thiết kế để dễ sử dụng và đáp ứng. Xử lý nghiệp vụ bao gồm validating input từ người dùng, gọi API backend, và cập nhật trạng thái ứng dụng sử dụng Redux.
4.2. Kiểm Thử và Sửa Lỗi
Kiểm thử là giai đoạn cuối và quan trọng của quá trình phát triển. Nhóm sử dụng các phương pháp kiểm thử chức năng để đảm bảo tất cả các tính năng hoạt động đúng theo yêu cầu. Kiểm thử tích hợp được thực hiện để kiểm tra giao tiếp giữa frontend và backend. Ngoài ra, nhóm cũng thực hiện kiểm thử hiệu suất để đảm bảo ứng dụng chạy mượt mà trên các thiết bị mobile khác nhau. Các lỗi được phát hiện được ghi lại và sửa chữa một cách hệ thống.