Giới thiệu dự án

Thị trường nhà trọ sinh viên tại các đô thị vệ tinh và trung tâm công nghiệp như tỉnh Bình Dương ghi nhận sự gia tăng đột biến về nhu cầu cư trú hàng năm. Theo thống kê giáo dục đại học, hơn 70% trong tổng số hàng chục nghìn sinh viên theo học tại các cơ sở đào tạo như Trường Đại học Bình Dương (BDU) là người ngoại tỉnh, phụ thuộc hoàn toàn vào hệ thống phòng trọ tư nhân. Tuy nhiên, phương thức tiếp cận thông tin nhà trọ truyền thống bộc lộ nhiều điểm nghẽn nghiêm trọng: thông tin phân mảnh qua tờ rơi, các nhóm mạng xã hội thiếu kiểm chứng, tình trạng "cò mồi", hét giá điện nước sai quy định (lên tới 4.000 - 5.000 VNĐ/kWh) và rủi ro lừa đảo tiền cọc giữ chỗ.

Đề tài "Xây dựng phần mềm tìm kiếm nhà trọ cho sinh viên Đại học Bình Dương" được thực hiện nhằm giải quyết trực diện bài toán bất đối xứng thông tin giữa sinh viên và chủ trọ thông qua giải pháp công nghệ đa nền tảng.

+-------------------------------------------------------------------------------+
|                       MÔ HÌNH BÀI TOÁN & MỤC TIÊU DỰ ÁN                       |
+-------------------------------------------------------------------------------+
|   [Sinh viên BDU]  <--->  [Hệ thống Tìm kiếm & Đặt phòng]  <--->  [Chủ nhà trọ] |
|   (Tìm kiếm, Lọc,         (Flutter App + PHP/NodeJS Web           (Đăng tin,  |
|    Bản đồ Mapbox,          RESTful API + MySQL Server)             Quản lý,   |
|    Xác thực giá)                                                  Duyệt cọc)  |
|                                     ^                                         |
|                                     |                                         |
|                           [Quản trị viên / Nhà trường]                         |
|                           (Kiểm duyệt tin, Xác thực chủ trọ)                  |
+-------------------------------------------------------------------------------+

Mục tiêu của dự án:

  1. Xây dựng ứng dụng di động đa nền tảng (Flutter/Android): Cung cấp giao diện trực quan hỗ trợ sinh viên tra cứu phòng trọ theo giá tiền, diện tích, khoảng cách địa lý và tiện ích đi kèm.
  2. Xây dựng cổng thông tin quản trị Web (PHP/JavaScript): Phục vụ ban quản trị nhà trường và chủ nhà trọ thực hiện kiểm duyệt, đăng bài, cập nhật trạng thái phòng và quản lý danh sách đặt trước.
  3. Chuẩn hóa cơ sở dữ liệu tập trung (MySQL): Lưu trữ toàn diện thông tin bất động sản, hình ảnh, đánh giá và lịch sử giao dịch nhằm ngăn chặn tin giả và bảo vệ người thuê.

Phạm vi và giới hạn đề tài:

  • Phạm vi không gian: Tập trung khoanh vùng các khu trọ thuộc địa bàn Thành phố Thủ Dầu Một và vùng phụ cận bán kính 5km quanh Trường Đại học Bình Dương.
  • Phạm vi công nghệ: Phát triển ứng dụng Client di động trên hệ điều hành Android (sử dụng Flutter Framework), ứng dụng Web quản lý (PHP/Node.js MVC), cơ sở dữ liệu quan hệ MySQL và tích hợp dịch vụ bản đồ Mapbox API.
  • Giới hạn: Giai đoạn thử nghiệm tập trung vào quy trình xác thực thủ công bởi quản trị viên, chưa tích hợp cổng thanh toán trực tuyến ký quỹ tự động (Escrow Payment).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát thực tế các kênh tìm kiếm nhà trọ phổ biến hiện nay cho thấy sự chênh lệch rõ rệt về độ tin cậy và tính tiện ích cho sinh viên:

Tiêu chí so sánh Mạng xã hội (Facebook/Zalo) Website BĐS thương mại (Phongtro123, Batdongsan) Ứng dụng BDU Room Finder (Đề xuất)
Độ tin cậy dữ liệu Rất thấp (Tin rác, lừa đảo chiếm 45%) Trung bình (Nhiều tin môi giới trôi nổi) Cao (Xác thực qua ban quản trị/nhà trường)
Tìm kiếm theo bản đồ Không hỗ trợ Hỗ trợ cơ bản (Google Maps ghim vị trí) Tích hợp sâu Mapbox SDK, tính bán kính thực
Minh bạch giá dịch vụ Mập mờ (Thường thỏa thuận sau) Không đồng nhất Bắt buộc kê khai chi tiết (Điện, nước, cọc)
Tối ưu cho sinh viên BDU Phân tán, khó lọc theo bán kính trường Phạm vi quá rộng, thiếu thông tin cụ thể Khoanh vùng chính xác địa bàn quanh trường
Chi phí đăng tin Miễn phí nhưng trôi bài nhanh Phí cao theo ngày/lượt đẩy top Miễn phí hoàn toàn cho chủ trọ quanh trường

Ma trận ưu tiên yêu cầu người dùng (MoSCoW):

  • Must Have (Bắt buộc có): Đăng nhập/Đăng ký xác thực; Tìm kiếm theo khoảng giá, vị trí; Bản đồ định vị nhà trọ; Xem chi tiết (giá điện, nước, cọc, diện tích); Quản lý duyệt tin của Admin.
  • Should Have (Nên có): Đặt phòng trước (tbl_dattruocphong); Gọi điện/Nhắn tin trực tiếp với chủ trọ; Đánh dấu phòng ưng ý; Quét mã QR cài đặt ứng dụng.
  • Could Have (Có thể có): Đánh giá/Phản hồi chất lượng chủ trọ (Review system); Lọc phòng còn trống theo thời gian thực.
  • Won't Have (Chưa thực hiện đợt này): Ký hợp đồng điện tử có chữ ký số; Thanh toán tiền trọ tự động qua cổng VNPay/MoMo.

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc hướng dịch vụ nhiều tầng (Multi-tier Client-Server Architecture) dựa trên mô hình Model-View-Controller (MVC), đảm bảo tính phân tách độc lập giữa tầng hiển thị, tầng xử lý logic và tầng lưu trữ dữ liệu.

+-----------------------------------------------------------------------------------+
|                              KIẾN TRÚC TỔNG THỂ HỆ THỐNG                          |
+-----------------------------------------------------------------------------------+
|  [Presentation Layer]                                                             |
|   - Mobile Client: Flutter UI (Material Widgets, Dart 2.18+)                      |
|   - Web Portal: Responsive HTML5/CSS3/JavaScript (Bootstrap, Blade/Templates)     |
+------------------------------------------+----------------------------------------+
                                           | HTTPS / JSON (RESTful API)
+------------------------------------------v----------------------------------------+
|  [Application / Business Logic Layer]                                             |
|   - Web Server: Node.js 18 LTS Runtime / PHP 8.1 Engine                           |
|   - Routing & Controller: RESTful Controller (Routing, Middleware, Auth Token)    |
|   - Location Service: Mapbox Vector Tiles / Geocoding REST API                    |
+------------------------------------------+----------------------------------------+
                                           | PDO / MySQL Connector
+------------------------------------------v----------------------------------------+
|  [Data Persistence Layer]                                                         |
|   - Database: MySQL Server 8.0 (InnoDB Engine, UTF8mb4, Spatial Indexing)        |
|   - Storage Service: Amazon Web Services (AWS S3) / Static Assets Storage         |
+-----------------------------------------------------------------------------------+

Công nghệ và phiên bản sử dụng:

  • Client Di động: Flutter SDK v3.3.x, Dart Language v2.18.x.
  • Client Quản trị & Backend: PHP v8.1 / Node.js v18.12 LTS, Express.js / Native MVC Framework.
  • Hệ quản trị CSDL: MySQL Server v8.0 Community Edition (Engine InnoDB).
  • Vị trí và Bản đồ: Mapbox Maps SDK v10.x & Mapbox Geocoding API.
  • Môi trường & Công cụ phát triển: Android Studio Dolphin (2021.3.1), Visual Studio Code v1.74, Postman API Tool.

Thiết kế cơ sở dữ liệu quan hệ (Relational Schema):

Hệ thống sử dụng tập hợp các bảng quan hệ đồng bộ chuẩn hóa 3NF:

  • tbl_admin: Lưu trữ định danh quản trị viên cấp cao.
  • tbl_chutro: Thông tin cá nhân, CCCD, số điện thoại, trạng thái phê duyệt của chủ nhà trọ.
  • tbl_nhatro: Thông tin khu trọ (tên nhà trọ, địa chỉ, kinh độ longitude, vĩ độ latitude, mã phường tbl_phuong).
  • tbl_chitietnhatro & tbl_phongtro: Thông tin từng phòng (diện tích, giá thuê, giá điện, giá nước, tiền đặt cọc, tình trạng trống/đã thuê).
  • tbl_hinhanhphongtro: Đường dẫn lưu trữ hình ảnh thực tế của từng phòng trọ.
  • tbl_dattruocphong: Quản lý yêu cầu giữ chỗ của sinh viên (id_nguoidung, id_phongtro, thời gian đặt, trạng thái duyệt).
-- Trích xuất cấu trúc bảng nòng cốt lưu trữ dữ liệu phòng trọ
CREATE TABLE tbl_phongtro (
    id_phongtro INT AUTO_INCREMENT PRIMARY KEY,
    id_nhatro INT NOT NULL,
    ten_phong VARCHAR(100) NOT NULL,
    dien_tich DECIMAL(6,2) NOT NULL COMMENT 'Đơn vị: m2',
    gia_thue DECIMAL(12,2) NOT NULL COMMENT 'Đơn vị: VNĐ/tháng',
    gia_dien DECIMAL(10,2) NOT NULL,
    gia_nuoc DECIMAL(10,2) NOT NULL,
    tien_coc DECIMAL(12,2) NOT NULL,
    trang_thai TINYINT(1) DEFAULT 0 COMMENT '0: Còn trống, 1: Đã thuê',
    mo_ta TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (id_nhatro) REFERENCES tbl_nhatro(id_nhatro) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Thiết kế RESTful Web API Endpoints:

Phương thức URI Endpoint Chức năng nghiệp vụ Định dạng dữ liệu
POST /api/v1/auth/login Xác thực đăng nhập sinh viên / chủ trọ JSON Payload (email, password)
GET /api/v1/rooms/search Tìm kiếm phòng trọ theo bộ lọc và tọa độ Query Params (lat, lng, radius, minPrice, maxPrice)
GET /api/v1/rooms/{id} Lấy thông tin chi tiết phòng, giá điện/nước URL Parameter id
POST /api/v1/bookings/create Gửi yêu cầu đặt trước phòng trọ JSON Payload (id_phongtro, user_id, note)
POST /api/v1/landlords/rooms Chủ trọ đăng tin nhà trọ / phòng trọ mới Multipart Form-Data (Fields + Images)
PUT /api/v1/admin/verify/{id} Admin phê duyệt bài đăng hoặc tài khoản chủ trọ JSON Payload (status: approved/rejected)

Implementation và kết quả

Development Process

Dự án áp dụng quy trình phát triển phần mềm theo Mô hình thác nước (Waterfall Model) từ ngày 15/09/2022 đến ngày 19/01/2023, trải qua 6 giai đoạn nghiêm ngặt:

  1. Khảo sát & Thu thập yêu cầu (16/09 - 08/10/2022): Phỏng vấn trực tiếp 100 sinh viên BDU và 20 chủ hộ cho thuê trọ tại phường Hiệp Thành và Phú Hòa (Thủ Dầu Một).
  2. Phân tích thiết kế hệ thống (09/10 - 15/11/2022): Xây dựng sơ đồ Use-case, Class Diagram, Sequence Diagram cho các luồng nghiệp vụ chính.
  3. Thiết kế CSDL & Lập trình Backend (16/11 - 10/12/2022): Hiện thực hóa CSDL MySQL, viết các Store Procedure, xây dựng tầng API JSON.
  4. Lập trình Client Flutter & Web Admin (11/12 - 20/12/2022): Code giao diện Material Design trên Android và bảng điều khiển quản trị web.
  5. Kiểm thử và Hoàn thiện (21/12/2022 - 10/01/2023): Kiểm thử hộp đen, kiểm thử tải và fix bugs.

Thuật toán tính toán khoảng cách không gian (Haversine Formula):

Để xác định khoảng cách chính xác giữa vị trí của sinh viên $(lat_1, lon_1)$ và tọa độ của dãy nhà trọ $(lat_2, lon_2)$ trên nền tảng bản đồ Mapbox, hệ thống tích hợp công thức Haversine với độ phức tạp tính toán không gian $O(1)$:

$$d = 2R \cdot \arcsin \left( \sqrt{\sin^2\left(\frac{\Delta \phi}{2}\right) + \cos(\phi_1)\cos(\phi_2)\sin^2\left(\frac{\Delta \lambda}{2}\right)} \right)$$

Trong đó $R = 6.371\text{ km}$ (bán kính Trái Đất), $\Delta \phi = \phi_2 - \phi_1$, $\Delta \lambda = \lambda_2 - \lambda_1$.

// Implementation tính khoảng cách thực tế trong Flutter App
import 'dart:math';

class GeoCalculator {
  static const double earthRadiusKm = 6371.0;

  static double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
    var dLat = _toRadians(lat2 - lat1);
    var dLon = _toRadians(lon2 - lon1);

    var a = sin(dLat / 2) * sin(dLat / 2) +
        cos(_toRadians(lat1)) * cos(_toRadians(lat2)) *
        sin(dLon / 2) * sin(dLon / 2);
        
    var c = 2 * atan2(sqrt(a), sqrt(1 - a));
    return earthRadiusKm * c; // Trả về khoảng cách theo km
  }

  static double _toRadians(double degree) => degree * pi / 180;
}
// Xử lý truy vấn lọc danh sách phòng trọ theo giá và vị trí (Node.js/Express Backend)
router.get('/api/v1/rooms/search', async (req, res) => {
    try {
        const { minPrice, maxPrice, wardId } = req.query;
        let query = `
            SELECT pt.id_phongtro, pt.ten_phong, pt.gia_thue, pt.dien_tich, 
                   nt.ten_nhatro, nt.dia_chi, nt.latitude, nt.longitude
            FROM tbl_phongtro pt
            JOIN tbl_nhatro nt ON pt.id_nhatro = nt.id_nhatro
            WHERE pt.trang_thai = 0 
              AND pt.gia_thue BETWEEN ? AND ?`;
        
        const params = [minPrice || 0, maxPrice || 10000000];
        if (wardId) {
            query += ' AND nt.id_phuong = ?';
            params.push(wardId);
        }

        const [results] = await dbPool.execute(query, params);
        return res.status(200).json({ success: true, count: results.length, data: results });
    } catch (error) {
        return res.status(500).json({ success: false, message: error.message });
    }
});

Testing và Validation

Hệ thống đã trải qua quá trình kiểm thử nghiêm ngặt bao gồm kiểm thử đơn vị (Unit Test), kiểm thử tích hợp (Integration Test) và kiểm thử chấp nhận người dùng (User Acceptance Testing - UAT):

+-------------------------------------------------------------------------------+
|                       KẾT QUẢ KIỂM THỬ VÀ HIỆU NĂNG                           |
+-------------------------------------------------------------------------------+
|  - Độ phủ Unit Test:                  86.4% trên toàn bộ Module Logic         |
|  - Thời gian phản hồi API trung bình: 185ms (với 100 truy vấn đồng thời)     |
|  - Tỷ lệ khung hình render (Flutter): 60 FPS ổn định trên Android 10+         |
|  - Tỷ lệ phát hiện lỗi sau UAT:      100% bug nghiêm trọng được fix          |
+-------------------------------------------------------------------------------+
  • Kiểm thử hiệu năng: Thực hiện mô phỏng 100 phiên kết nối đồng thời qua Apache Benchmark gửi request tới REST API server; kết quả cho thấy thời gian phản hồi trung bình đạt 185ms, tỷ lệ lỗi package 0.0%.
  • Độ bao phủ tính năng: Hoàn thành 100% các Use-case trọng điểm: Đăng nhập/Đăng ký, Đăng tin cho thuê trọ, Duyệt tin Admin, Xem danh sách phòng, Lọc phòng theo giá, Hiển thị tọa độ trên bản đồ Mapbox.
  • Khảo sát UAT (100 sinh viên BDU & 20 chủ trọ):
    • Điểm hài lòng tổng thể (CSAT): 92.5%.
    • Điểm đánh giá độ khả dụng hệ thống (SUS Score): 84/100 (xếp loại Excellent).
    • Tỷ lệ thao tác tìm được phòng ưng ý trong vòng dưới 3 phút: 88%.

Đổi mới và đóng góp

  1. Cơ chế xác thực tin đăng 2 lớp (Two-Tier Verification): Khác biệt hoàn toàn so với các hội nhóm Facebook hay diễn đàn tự do, ứng dụng thiết lập cơ chế bắt buộc chủ trọ gửi giấy tờ xác nhận quyền sở hữu hoặc địa chỉ thực tế để ban quản trị duyệt trước khi tin hiển thị.
  2. Minh bạch hóa cơ cấu chi phí nhà trọ: Chuẩn hóa bảng giá dịch vụ với việc định danh rõ ràng tiền điện/nước/internet/tiền đặt cọc, giảm thiểu 100% tình trạng chủ trọ tự ý tăng phụ phí bất hợp lý khi ký kết.
  3. Tối ưu hóa hiệu năng bằng Flutter & Single Database Architecture: Ứng dụng mobile và cổng thông tin Web chia sẻ chung một cơ sở dữ liệu MySQL duy nhất, giúp dữ liệu phòng trống được cập nhật tức thì theo thời gian thực (Zero Latency Delay).
  4. Hiệu quả thực tiễn đo lường được:
    • Cắt giảm 75% thời gian tìm trọ vật lý ngoài thực địa của tân sinh viên (từ trung bình 4-5 ngày xuống còn dưới 1 ngày).
    • Loại bỏ 95% nguy cơ sinh viên gặp phải các đối tượng lừa đảo tiền cọc không rõ nguồn gốc.

Ứng dụng thực tế và triển khai

Kịch bản sử dụng thực tế (Real-World Scenarios):

  • Kịch bản 1 (Tân sinh viên nhập học): Sinh viên Nguyễn Văn A mới trúng tuyển vào BDU, cài app qua quét mã QR tại bàn tiếp sinh viên. Sử dụng bộ lọc "Giá thuê từ 1.000.000 - 1.800.000 VNĐ", bán kính "Dưới 2km từ cơ sở 1". Hệ thống hiển thị 15 phòng trống có hình ảnh thực tế, A bấm nút "Gọi cho chủ trọ" để hẹn giờ xem phòng và bấm "Đặt phòng trước".
  • Kịch bản 2 (Chủ nhà trọ quản lý phòng): Bà Trần Thị B sở hữu dãy trọ 10 phòng tại Phường Phú Hòa. Khi có 2 phòng vừa trả, bà đăng nhập website, chuyển trạng thái trang_thai từ 1 (Đã thuê) sang 0 (Còn trống), cập nhật ảnh chụp mới. Ngay lập tức, 2 phòng này xuất hiện trên màn hình radar tìm kiếm của toàn bộ sinh viên đang mở app.
+----------------------------------------------------------------------------------+
|                          SƠ ĐỒ TRIỂN KHAI VẬT LÝ HỆ THỐNG                        |
+----------------------------------------------------------------------------------+
|                                                                                  |
|    [Sinh viên App]                 [Chủ trọ / Admin Browser]                     |
|           |                                    |                                 |
|           +-----------------+------------------+                                 |
|                             | (HTTPS Traffic)                                    |
|                             v                                                    |
|                [Nginx Reverse Proxy / Load Balancer]                             |
|                             |                                                    |
|                             v                                                    |
|              +------------------------------+                                    |
|              |     AWS EC2 (Ubuntu 22.04)   |                                    |
|              |  - Node.js API (PM2 Cluster) | <---> [Mapbox Cloud Services]      |
|              |  - PHP-FPM Web Application   |                                    |
|              +--------------+---------------+                                    |
|                             |                                                    |
|                             v                                                    |
|              +------------------------------+                                    |
|              |    AWS RDS / MySQL 8.0 DB    |                                    |
|              | (InnoDb, Backup Daily, Auth) |                                    |
|              +------------------------------+                                    |
|                                                                                  |
+----------------------------------------------------------------------------------+

Yêu cầu triển khai hệ thống (System Requirements):

  • Server: CPU 2 Core, RAM 4GB, Dung lượng SSD 50GB (Ví dụ: AWS EC2 t3.medium hoặc VPS Linux Ubuntu 22.04 LTS).
  • Phần mềm máy chủ: Nginx v1.22+, Node.js v18 LTS / PHP v8.1, MySQL v8.0+, SSL Certificate (Let's Encrypt).
  • Client di động: Thiết bị chạy hệ điều hành Android 6.0 (API Level 23) trở lên, có kết nối Internet (4G/Wi-Fi) và GPS.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại:

  • Hệ thống chưa hỗ trợ cơ chế lưu trữ ngoại tuyến (Offline Caching) toàn diện khi mất kết nối mạng.
  • Kênh nhắn tin giữa sinh viên và chủ trọ đang dựa trên giao thức gọi điện thoại/SMS truyền thống, chưa tích hợp WebSockets Chat trực tiếp trong ứng dụng.
  • Phiên bản ứng dụng di động mới dừng lại ở nền tảng Android, chưa hoàn tất build gói IPA cho iOS do yêu cầu tài khoản Apple Developer.

Hướng nâng cấp trong tương lai:

  1. Tích hợp thuật toán Recommendation System: Ứng dụng Machine Learning phân tích hành vi để tự động gợi ý nhà trọ phù hợp với mức chi tiêu và sở thích của từng sinh viên.
  2. Tích hợp thanh toán Escrow: Triển khai tính năng giữ tiền cọc an toàn qua ví điện tử; tiền cọc chỉ chuyển sang tài khoản chủ trọ khi sinh viên xác nhận đã nhận phòng đúng mô tả.
  3. Nâng cấp tính năng Xem phòng 360/VR: Cho phép sinh viên trải nghiệm không gian phòng trọ ảo 360 độ trực tiếp trên app nhằm giảm thiểu công sức đi lại.

Đối tượng hưởng lợi

+-------------------------------------------------------------------------------+
|                           LỢI ÍCH ĐỊNH LƯỢNG CHO CÁC NHÓM                     |
+-------------------------------------------------------------------------------+
|  - Sinh viên BDU:         Tiết kiệm 75% thời gian, bảo vệ 100% rủi ro tiền cọc|
|  - Chủ nhà trọ:           Tăng 60% tốc độ lấp đầy phòng trống vào đầu kỳ học  |
|  - Nhà trường / Xã hội:   Nâng cao an ninh trật tự, quản lý lưu trú sinh viên |
|  - Lập trình viên:        Mẫu kiến trúc tham khảo chuẩn Flutter + RESTful + DB |
+-------------------------------------------------------------------------------+
  • Sinh viên & Phụ huynh: Tiếp cận nguồn dữ liệu phòng trọ chính xác, rõ ràng về giá cả, vị trí và tiện ích, loại bỏ hoàn toàn nỗi lo bị lừa đảo đặt cọc khi nhập học xa nhà.
  • Chủ hộ kinh doanh phòng trọ: Sở hữu kênh quảng bá miễn phí, trực tiếp đến đúng tệp khách hàng mục tiêu là sinh viên Đại học Bình Dương mà không mất chi phí trung gian cho môi giới.
  • Nhà trường & Tổ chức quản lý sinh viên: Dễ dàng kiểm soát, hỗ trợ sinh viên trong công tác quản lý tạm trú, xây dựng môi trường học đường văn minh, an toàn.
  • Cộng đồng lập trình viên & Sinh viên CNTT: Đóng vai trò là dự án mẫu hoàn chỉnh về quy trình phát triển ứng dụng di động đa nền tảng kết hợp hệ thống thông tin địa lý (GIS) và kiến trúc Client-Server.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai ứng dụng lên môi trường Production là gì?

Hệ thống yêu cầu một máy chủ Web chạy hệ điều hành Linux (khuyến nghị Ubuntu 20.04/22.04 LTS), cài đặt Nginx làm Reverse Proxy, runtime Node.js v18 LTS hoặc PHP 8.1 trở lên, hệ quản trị CSDL MySQL 8.0, và một tên miền có chứng chỉ bảo mật HTTPS (SSL) để mã hóa dữ liệu API. Phía thiết bị đầu cuối chỉ cần smartphone Android 6.0 trở lên với bộ nhớ RAM tối thiểu 2GB.

2. Hệ thống có khả năng mở rộng (Scalability) để phục vụ các trường đại học khác không?

Có. Nhờ thiết kế cơ sở dữ liệu quan hệ có phân cấp theo bảng tbl_phuong và cấu trúc RESTful API phi trạng thái (Stateless), hệ thống có thể mở rộng theo chiều ngang (Horizontal Scaling) phục vụ toàn bộ các trường Đại học/Cao đẳng trên địa bàn tỉnh Bình Dương hoặc TP.HCM bằng cách cấu hình thêm các trường dữ liệu định danh theo id_truong mà không cần thay đổi kiến trúc cốt lõi.

3. Làm thế nào để ngăn chặn tình trạng chủ trọ đăng thông tin sai sự thật hoặc phòng đã hết?

Hệ thống áp dụng quy trình kiểm soát 3 lớp: (1) Kiểm duyệt thông tin ban đầu bởi Admin trường; (2) Chức năng "Báo cáo tin sai sự thật" dành cho sinh viên trực tiếp trên ứng dụng; (3) Tự động gửi thông báo định kỳ yêu cầu chủ trọ xác nhận lại trạng thái phòng còn trống sau mỗi 15 ngày.

4. Chi phí vận hành và bảo trì hàng tháng của hệ thống là bao nhiêu?

Chi phí vận hành định kỳ duy trì ở mức tối ưu cho môi trường giáo dục: Cloud Server (AWS EC2 / VPS) khoảng $10 - $20/tháng, Mapbox API miễn phí cho 50.000 lượt tải bản đồ hàng tháng (vượt hạn mức tính $5/1000 lượt), chi phí bảo trì tên miền khoảng $15/năm. Tổng ngân sách vận hành thực tế chỉ dao động từ 300.000 - 600.000 VNĐ/tháng.

5. Ứng dụng xử lý bài toán bảo mật dữ liệu và quyền riêng tư của sinh viên như thế nào?

Toàn bộ mật khẩu tài khoản người dùng được băm một chiều bằng thuật toán bcrypt với muối ngẫu nhiên (Salt rounds = 10) trước khi lưu vào MySQL. Các kết nối API đều bắt buộc qua giao thức bảo mật Transport Layer Security (HTTPS). Thông tin số điện thoại của sinh viên chỉ được hiển thị cho chủ trọ khi sinh viên chủ động bấm nút "Đặt trước phòng" và đồng ý chia sẻ thông tin liên lạc.


Kết luận

Đồ án tốt nghiệp "Xây dựng phần mềm tìm kiếm nhà trọ cho sinh viên Đại học Bình Dương" của tác giả Phạm Hoàng Nam (dưới sự hướng dẫn của thầy Huỳnh Quang Đức) đã hoàn thành xuất sắc các mục tiêu nghiên cứu và ứng dụng thực tiễn đề ra. Dự án không chỉ giải quyết triệt để vấn đề tìm kiếm phòng trọ an toàn, minh bạch cho cộng đồng sinh viên BDU mà còn minh chứng cho tính hiệu quả của việc kết hợp các công nghệ hiện đại: Flutter, Node.js/PHP, MySQL và Mapbox API.

Hệ thống đã đạt được các chỉ số hiệu năng vượt trội với thời gian phản hồi API dưới 200ms, độ tin cậy dữ liệu được kiểm duyệt 100% và nhận được phản hồi tích cực từ 92.5% người dùng thử nghiệm. Đây là nền tảng vững chắc để tiếp tục mở rộng quy mô, hoàn thiện các tính năng AI gợi ý thông minh và cổng thanh toán bảo chứng trong các giai đoạn phát triển tiếp theo.