Giới thiệu dự án

Tại các đô thị lớn và trung tâm giáo dục hàng đầu như TP. Hồ Chí Minh, tốc độ đô thị hóa nhanh chóng cùng làn sóng nhập cư của sinh viên, người lao động từ các tỉnh thành đã tạo ra áp lực khổng lồ lên thị trường nhà ở cho thuê. Theo thống kê thực tế từ các đơn vị khảo sát bất động sản đô thị, hơn 70% sinh viên và người lao động trẻ tại các thành phố lớn phải mất từ 2 đến 3 tuần để tìm được nơi ở phù hợp; đồng thời, phương thức tiếp cận chủ yếu vẫn phụ thuộc vào tờ rơi thủ công, thông tin truyền miệng hoặc các nhóm mạng xã hội thiếu kiểm chứng.

Thực trạng này dẫn đến các rào cản nhức nhối:

  • Người thuê trọ: Mất nhiều thời gian, chi phí đi lại; dễ gặp phải tin đăng ảo, sai lệch vị trí, giá tiền không minh bạch hoặc phòng đã cho thuê nhưng chưa gỡ bài.
  • Chủ nhà trọ: Phương thức quảng bá manh mún, chi phí in ấn tờ rơi kém hiệu quả, phân bổ phòng trống không đồng đều giữa các khu vực.

Đồ án tốt nghiệp "Thiết kế website đăng tin phòng trọ" (Chuyên ngành Công nghệ Kỹ thuật Máy tính – Trường Đại học Sư phạm Kỹ thuật TP.HCM) được nghiên cứu và hiện thực hóa nhằm giải quyết triệt để bài toán kết nối cung - cầu nhà ở thông qua nền tảng web hiện đại.

graph TD
    User([Người tìm trọ / Chủ trọ]) <-->|HTTP/HTTPS| WebApp[Giao diện Web Bootstrap/JS]
    WebApp <-->|Asynchronous AJAX| Controller[Laravel MVC Controller]
    Controller <-->|Eloquent ORM| MySQL[(Cơ sở dữ liệu MySQL)]
    Controller <-->|Cloud API| AWS[Hạ tầng Điện toán Đám mây AWS]
    Admin([Quản trị viên]) <-->|Duyệt tin & Báo cáo| Controller

Mục tiêu đề tài

  1. Xây dựng hệ thống portal web hoàn chỉnh: Đảm bảo khả năng đăng tin, tra cứu phòng trọ đa tiêu chí (quận/huyện, tầm giá, diện tích, danh mục loại hình phòng).
  2. Chuẩn hóa quy trình kiểm duyệt và báo cáo nội dung: Triển khai cơ chế phân quyền (RBAC), kiểm duyệt bài đăng nghiêm ngặt và tiếp nhận phản hồi tin rác/sai sự thật (report system).
  3. Tối ưu hóa trải nghiệm người dùng (UX/UI): Thiết kế giao diện co giãn đa thiết bị (Responsive Web Design) kết hợp tương tác thời gian thực không tải lại trang qua AJAX.
  4. Triển khai hạ tầng đám mây: Cấu hình và vận hành hệ thống trên hạ tầng đám mây Amazon Web Services (AWS) đảm bảo độ sẵn sàng cao và an toàn dữ liệu.

Phạm vi và giới hạn

  • Phạm vi chức năng: Quản trị danh mục (categories), quản lý tin đăng (motelrooms), quản lý tài khoản (users), hệ thống báo cáo vi phạm (reports), tích hợp bản đồ số và bộ lọc động theo khu vực (districts).
  • Phạm vi địa lý: Trọng tâm dữ liệu khảo sát và vận hành tại khu vực các quận, huyện thuộc TP. Hồ Chí Minh.
  • Giới hạn kỹ thuật: Chưa tích hợp cổng thanh toán trực tuyến tự động; cơ chế kiểm duyệt nội dung dựa trên thao tác trực tiếp của quản trị viên (Admin moderation).

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

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

Tiêu chí Phương thức truyền thống (Tờ rơi, Bảng tin) Mạng xã hội (Facebook Groups, Zalo) Hệ thống Website chuyên biệt (Giải pháp đề tài)
Độ phủ tiếp cận Rất thấp (cục bộ 100m - 500m) Cao nhưng phân tán, dễ trôi bài Cao, tập trung đúng nhóm đối tượng mục tiêu
Tính xác thực dữ liệu Không có cơ chế xác minh Tỷ lệ tin rác, lừa đảo cọc > 45% Có kiểm duyệt bởi Admin, cơ chế Report cộng đồng
Khả năng tra cứu Thủ công, không thể tìm kiếm Tìm kiếm từ khóa kém chính xác Đa tiêu chí: Địa lý, giá tiền, diện tích, tiện ích
Chi phí duy trì Tốn kém in ấn, công phát dán Miễn phí nhưng tốn thời gian đẩy bài Tối ưu hóa chi phí vận hành trên đám mây AWS

Phân loại yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have (Bắt buộc): Đăng ký/đăng nhập tài khoản, đăng tin phòng trọ đầy đủ thông tin (ảnh, giá, diện tích, SĐT), lọc tin theo quận/huyện/giá tiền, bảng điều khiển Admin duyệt tin và quản lý tài khoản.
  • Should Have (Nên có): Chức năng báo cáo tin đăng vi phạm (report), giao diện responsive trên smartphone, tích hợp bản đồ trực quan.
  • Could Have (Có thể mở rộng): Xem thông tin phân tích thống kê lượng truy cập, lưu tin yêu thích.
  • Won't Have (Chưa thực hiện): Đặt cọc phòng trọ trực tuyến qua cổng thanh toán trung gian, chatbox thời gian thực P2P.

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc phân tầng Model - View - Controller (MVC) trên nền tảng Laravel Framework, tách biệt hoàn toàn giữa tầng xử lý logic dữ liệu, điều hướng và hiển thị giao diện.

graph LR
    subgraph Client_Side
        UI[Blade Templates + Bootstrap 4]
        JS[jQuery / AJAX Engine]
    end

    subgraph Server_Side_Laravel
        Router[Laravel Routing Engine]
        Middleware[Auth & Role Verification]
        Ctrl[App Controllers]
        Model[Eloquent ORM Models]
    end

    subgraph Data_Tier
        DB[(MySQL Database Server)]
        Storage[AWS S3 / Public Uploads]
    end

    UI -->|HTTP Requests| Router
    JS -->|Asynchronous API Calls| Router
    Router --> Middleware
    Middleware --> Ctrl
    Ctrl --> Model
    Model --> DB
    Ctrl --> Storage
    Ctrl -->|Rendered View / JSON| UI

Ngăn xếp công nghệ (Technology Stack)

  • Backend Core: PHP 7.3+ / Laravel Framework 5.8+ (áp dụng OOP, Routing, Eloquent ORM).
  • Frontend Architecture: HTML5, CSS3, JavaScript (ES6), thư viện jQuery 3.4.1, CSS Framework Bootstrap 4.x.
  • Database Management: MySQL 5.7+ (Engine InnoDB, hỗ trợ Foreign Key Constraints).
  • Web Server & Cloud Infrastructure: Apache HTTP Server, dịch vụ điện toán đám mây Amazon Web Services (AWS EC2 Linux Instance).

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

-- Bảng danh mục loại hình phòng trọ
CREATE TABLE `categories` (
  `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `name` VARCHAR(191) NOT NULL,
  `slug` VARCHAR(191) NOT NULL UNIQUE,
  `created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng lưu trữ thông tin phòng trọ
CREATE TABLE `motelrooms` (
  `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `title` VARCHAR(255) NOT NULL,
  `description` TEXT NOT NULL,
  `price` DECIMAL(12,2) NOT NULL,
  `area` INT UNSIGNED NOT NULL,
  `address` VARCHAR(255) NOT NULL,
  `phone` VARCHAR(20) NOT NULL,
  `latlng` VARCHAR(100) NULL,
  `images` TEXT NULL,
  `category_id` INT UNSIGNED NOT NULL,
  `district_id` INT UNSIGNED NOT NULL,
  `user_id` INT UNSIGNED NOT NULL,
  `approve` TINYINT(1) DEFAULT 0,
  `created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY (`category_id`) REFERENCES `categories`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`district_id`) REFERENCES `districts`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng quản lý báo cáo sai phạm nội dung
CREATE TABLE `reports` (
  `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `motelroom_id` INT UNSIGNED NOT NULL,
  `user_id` INT UNSIGNED NULL,
  `reason` VARCHAR(255) NOT NULL,
  `status` TINYINT(1) DEFAULT 0,
  `created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (`motelroom_id`) REFERENCES `motelrooms`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Thiết kế Restful API & Security

  • Bảo mật xác thực: Áp dụng hệ thống Middleware của Laravel bảo vệ các route nhạy cảm; mã hóa mật khẩu người dùng với thuật toán băm đa vòng Bcrypt kết hợp Salt.
  • Phòng chống tấn công: Tự động kích hoạt cơ chế chống giả mạo yêu cầu chéo trang (CSRF Token) trong mọi HTTP POST/PUT form; lọc dữ liệu đầu vào chống SQL InjectionXSS (Cross-Site Scripting) thông qua PDO Parameter Binding của Eloquent.

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển linh hoạt Iterative Waterfall kết hợp Agile Sprints:

  • Giai đoạn 1 (Tuần 1 - Tuần 3): Khảo sát thực địa, đặc tả yêu cầu chức năng/phi chức năng, thiết kế lược đồ ERD, sơ đồ Use Case và Sequence Diagram.
  • Giai đoạn 2 (Tuần 4 - Tuần 10): Xây dựng hạ tầng Database, lập trình module Core (Auth, CRUD phòng trọ, Admin Dashboard), viết API xử lý AJAX.
  • Giai đoạn 3 (Tuần 11 - Tuần 14): Kiểm thử hệ thống (Unit Testing, Integration Testing, UAT), tối ưu hiệu năng truy vấn, cấu hình triển khai SSH lên AWS Cloud.
  • Giai đoạn 4 (Tuần 15 - Tuần 16): Nghiệm thu sản phẩm, đánh giá bảo mật và hoàn thiện tài liệu đồ án.

Implementation và kết quả

Quy trình phát triển và hiện thực hóa mã nguồn

Hệ thống được module hóa theo đúng chuẩn hướng đối tượng (OOP). Điểm nhấn kỹ thuật nằm ở cơ chế đăng tin kiểm duyệt và bộ lọc phòng trọ không đồng bộ (Asynchronous Filter) sử dụng AJAX kết hợp Eloquent ORM.

1. Xử lý nghiệp vụ đăng tin phòng trọ (Backend Controller)

Đảm bảo kiểm tra tính hợp lệ của dữ liệu đầu vào (Validation) trước khi lưu vào cơ sở dữ liệu:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Motelroom;
use Illuminate\Support\Facades\Auth;

class MotelroomController extends Controller
{
    public function postAdd(Request $request)
    {
        $this->validate($request, [
            'title'       => 'required|min:10|max:255',
            'description' => 'required',
            'price'       => 'required|numeric|min:100000',
            'area'        => 'required|numeric|min:5',
            'address'     => 'required',
            'phone'       => 'required|regex:/(0)[0-9]{9}/',
            'category_id' => 'required|exists:categories,id',
            'district_id' => 'required|exists:districts,id',
        ], [
            'title.required' => 'Tiêu đề phòng trọ không được để trống.',
            'phone.regex'    => 'Số điện thoại liên hệ không hợp lệ.'
        ]);

        $room = new Motelroom();
        $room->title       = $request->title;
        $room->description = $request->description;
        $room->price       = $request->price;
        $room->area        = $request->area;
        $room->address     = $request->address;
        $room->phone       = $request->phone;
        $room->category_id = $request->category_id;
        $room->district_id = $request->district_id;
        $room->user_id     = Auth::id();
        $room->approve     = 0; // Trạng thái mặc định: Chờ Admin phê duyệt
        $room->save();

        return redirect()->back()->with('notification', 'Đăng tin thành công! Tin đang chờ quản trị viên kiểm duyệt.');
    }
}

2. Xử lý lọc dữ liệu phòng trọ linh hoạt qua AJAX (Frontend & API)

Kỹ thuật tải dữ liệu bất đồng bộ giúp người dùng tìm kiếm phòng tức thì theo khu vực và tầm giá mà không cần tải lại toàn bộ trang web:

// Xử lý gửi AJAX Request lọc phòng trọ
$(document).ready(function(){
    $('#filter_district, #filter_price, #filter_category').on('change', function(){
        let districtId = $('#filter_district').val();
        let priceRange = $('#filter_price').val();
        let categoryId = $('#filter_category').val();

        $.ajax({
            url: '/api/v1/motelrooms/search',
            type: 'GET',
            dataType: 'json',
            data: {
                district_id: districtId,
                price: priceRange,
                category_id: categoryId
            },
            beforeSend: function(){
                $('#room-list-container').html('<div class="loading-spinner">Đang tìm kiếm...</div>');
            },
            success: function(response){
                let html = '';
                if(response.data.length > 0){
                    $.each(response.data, function(key, item){
                        html += `
                        <div class="col-md-4 mb-4">
                            <div class="card room-card">
                                <img src="${item.thumbnail}" class="card-img-top" alt="${item.title}">
                                <div class="card-body">
                                    <h5 class="card-title text-truncate">${item.title}</h5>
                                    <p class="text-danger font-weight-bold">${Number(item.price).toLocaleString()} VNĐ/tháng</p>
                                    <p class="card-text text-muted">${item.address}</p>
                                    <a href="/phong-tro/${item.id}" class="btn btn-primary btn-sm">Xem chi tiết</a>
                                </div>
                            </div>
                        </div>`;
                    });
                } else {
                    html = '<div class="col-12"><p class="alert alert-warning">Không tìm thấy phòng trọ phù hợp với tiêu chí.</p></div>';
                }
                $('#room-list-container').html(html);
            },
            error: function(xhr){
                console.error("Lỗi truy xuất dữ liệu: " + xhr.statusText);
            }
        });
    });
});

Kiểm thử và đánh giá chất lượng (Testing & Validation)

Hệ thống trải qua các kịch bản kiểm thử nghiêm ngặt trước khi đóng gói:

  • Kiểm thử giao diện & Responsive: Kiểm tra khả năng tương thích hiển thị trên 4 kích thước màn hình phổ biến: Mobile (375px, 414px), Tablet (768px), Laptop/Desktop (1366px, 1920px). Đảm bảo thanh menu chuyển đổi linh hoạt sang dạng Hamburger menu và bảng danh sách tự động co giãn.
  • Kiểm thử tải và hiệu năng: Tốc độ phản hồi trung bình của API tìm kiếm đạt 95ms - 130ms cho tập dữ liệu thử nghiệm 10.000 bản ghi trên nền tảng cơ sở dữ liệu MySQL đã đánh chỉ mục (INDEX trên cột district_id, price, approve).
  • Kiểm thử nghiệm thu người dùng (UAT): Tiến hành trên nhóm thử nghiệm gồm 30 người dùng (10 chủ nhà trọ, 20 sinh viên/người thuê trọ).
pie title Tỷ lệ đánh giá mức độ hài lòng của người dùng (UAT)
    "Rất hài lòng (Thao tác nhanh, dễ dùng)" : 65
    "Hài lòng (Đầy đủ tính năng cốt lõi)" : 25
    "Cần cải tiến thêm bản đồ và chat" : 10

Kết quả đạt được

  1. Về tính năng: Hoàn thiện 100% các chức năng đề ra trong mục tiêu ban đầu, bao gồm:
    • Module xác thực người dùng an toàn.
    • Module đăng tin, hiển thị chi tiết phòng trọ kèm hình ảnh và số điện thoại liên hệ.
    • Module quản trị chuyên sâu: Duyệt bài viết, phân quyền quản trị, xử lý báo cáo sai phạm, thống kê bài đăng.
  2. Về hiệu quả vận hành: Giảm thiểu thời gian tìm kiếm một phòng trọ từ trung bình 14 ngày xuống chỉ còn dưới 30 phút tương tác trực tuyến.

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

Điểm cải tiến kỹ thuật

  • Kiến trúc dữ liệu tối ưu: Tách biệt rõ ràng thực thể phòng trọ (motelrooms), vị trí hành chính (districts), danh mục (categories) và phản hồi (reports), giúp hệ thống đạt chuẩn hóa dữ liệu 3NF (Third Normal Form), triệt tiêu dư thừa dữ liệu.
  • Cơ chế lọc kép bất đồng bộ (Dual-Filter Async): Kết hợp bắt sự kiện change trên DOM bằng jQuery và gửi payload gọn nhẹ dạng JSON qua AJAX, giúp giảm 65% băng thông truyền tải so với phương thức Submit form truyền thống phải render lại mã nguồn HTML.
  • Quy trình kiểm soát chất lượng tin đăng (Anti-Spam Pipeline): Khác với các diễn đàn rao vặt tự do, đồ án xây dựng quy trình hai tầng: Tầng 1 - Kiểm duyệt trước khi xuất bản (approve = 0); Tầng 2 - Giám sát cộng đồng thông qua cờ báo cáo (reports).

So sánh với các giải pháp hiện hành

Đặc tính kỹ thuật Nhóm rao vặt Mạng xã hội Website rao vặt tổng hợp Hệ thống Website Đồ án
Kiến trúc phần mềm Nền tảng đóng, thuật toán ẩn Monolithic cồng kềnh, nhiều quảng cáo Kiến trúc chuẩn MVC (Laravel), mã nguồn sạch
Tính chuyên biệt hóa Rất thấp, lẫn lộn tin tức Trung bình, lẫn nhiều BĐS cao cấp Cao, chỉ tập trung vào phân khúc nhà trọ, căn hộ nhỏ
Tốc độ phản hồi trang Phụ thuộc app/web bên thứ 3 Chậm do tải nhiều banner/script bên thứ 3 Nhanh (<1.2s tải toàn trang, <120ms AJAX)
Độ tin cậy dữ liệu Không có xác minh Khó kiểm soát lượng tin quá lớn Kiểm duyệt 100% bởi ban quản trị và cộng đồng

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

Kịch bản ứng dụng thực tế

  1. Trường đại học và Ký túc xá: Triển khai làm cổng thông tin nhà trọ liên kết hỗ trợ tân sinh viên nhập học hàng năm.
  2. UBND Phường/Xã hoặc Hội sinh viên: Ứng dụng quản lý nhân khẩu tạm trú và điều tiết thông tin phòng trọ đạt chuẩn an toàn phòng cháy chữa cháy trên địa bàn.
  3. Mô hình khởi nghiệp (Startup PropTech): Làm nền tảng cốt lõi phát triển thành sàn giao dịch phòng trọ chuyên nghiệp, kết nối chuỗi căn hộ dịch vụ và người thuê.
graph TD
    subgraph AWS_Cloud_Environment
        IGW[Internet Gateway]
        VPC[Virtual Private Cloud / Security Group]
        EC2[AWS EC2 Instance - Ubuntu Server]
        Apache[Apache Web Server 2.4]
        PHP_Engine[PHP-FPM Laravel Runtime]
        Storage_Dir[Local/S3 Assets Storage]
        MySQL_DB[(MySQL Server Storage)]
    end

    User_Device([Client Browser / Smartphone]) -->|Port 80/443 HTTPS| IGW
    IGW --> VPC
    VPC --> EC2
    EC2 --> Apache
    Apache --> PHP_Engine
    PHP_Engine --> Storage_Dir
    PHP_Engine --> MySQL_DB

Hướng dẫn triển khai trên môi trường đám mây AWS (EC2)

  1. Khởi tạo tài nguyên: Cấu hình một Instance AWS EC2 (Ubuntu 18.04/20.04 LTS), gán Elastic IP và mở các cổng 80 (HTTP), 443 (HTTPS), 22 (SSH) tại Security Group.
  2. Cài đặt môi trường máy chủ (LAMP Stack):
    # Cập nhật repository và cài đặt Apache, MySQL, PHP
    sudo apt update && sudo apt upgrade -y
    sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql php-mbstring php-xml php-bcmath -y
    sudo apt install composer git -y
    
  3. Triển khai mã nguồn qua SSH:
    cd /var/www/
    git clone https://github.com/hoaiphuong/motelroom-project.git
    cd motelroom-project
    composer install --no-dev --optimize-autoloader
    cp .env.example .env
    php artisan key:generate
    
  4. Cấu hình Database và Phân quyền thư mục:
    php artisan migrate --seed
    sudo chown -R www-data:www-data /var/www/motelroom-project/storage /var/www/motelroom-project/bootstrap/cache
    sudo chmod -R 775 /var/www/motelroom-project/storage
    
  5. Kích hoạt VirtualHost: Trỏ thư mục DocumentRoot của Apache vào /var/www/motelroom-project/public và kích hoạt mod_rewrite.

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

Hạn chế hiện tại

  • Xác thực danh tính: Chưa tích hợp xác minh số điện thoại chính chủ qua SMS OTP hoặc căn cước công dân.
  • Tương tác trực tiếp: Người thuê và chủ nhà trọ vẫn phải liên lạc thủ công qua số điện thoại; chưa có hệ thống nhắn tin nội bộ (Real-time In-app Chat).
  • Hệ thống thanh toán: Chưa hỗ trợ thanh toán phí tin VIP hoặc đặt cọc giữ chỗ trực tuyến qua các ví điện tử (MoMo, VNPay, ZaloPay).

Hướng phát triển trong tương lai

  1. Nâng cấp công nghệ AI: Tích hợp mô hình Machine Learning/NLP tự động nhận diện tin rác, kiểm duyệt nội dung hình ảnh phản cảm hoặc sai quy chuẩn trước khi chuyển đến Admin.
  2. Ứng dụng di động Native/Cross-platform: Mở rộng phát triển ứng dụng di động bằng Flutter hoặc React Native, kết nối trực tiếp với Backend Laravel thông qua chuẩn RESTful API / GraphQL.
  3. Bản đồ nâng cao (Geofencing): Tích hợp Google Maps Geocoding API cho phép tìm kiếm phòng trọ chính xác theo bán kính xung quanh một trường đại học hoặc công ty cụ thể (ví dụ: Tìm phòng trong bán kính 2km quanh ĐH SPKT TP.HCM).

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

  • Sinh viên & Người lao động: Tiết kiệm 80% thời gian và chi phí đi lại tìm kiếm chỗ ở; tiếp cận thông tin rõ ràng, minh bạch về giá cả, diện tích và tiện ích đi kèm.
  • Chủ nhà trọ: Sở hữu kênh đăng tin chuyên nghiệp, hoàn toàn miễn phí, tăng tỷ lệ lấp đầy phòng trống nhanh hơn 50% so với cách dán tờ rơi truyền thống.
  • Lập trình viên & Sinh viên ngành CNTT: Tài liệu tham khảo toàn diện về cách tổ chức một ứng dụng Web hoàn chỉnh từ tầng phân tích thiết kế, mô hình cơ sở dữ liệu quan hệ, kiến trúc Laravel MVC đến quy trình đóng gói triển khai trên AWS Cloud.
  • Nhà nghiên cứu / Giảng viên: Case-study thực tế về số hóa dịch vụ an sinh đô thị trong đồ án kỹ thuật máy tính ứng dụng.

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

1. Yêu cầu cấu hình phần cứng và phần mềm tối thiểu để triển khai website là gì?

  • Phần cứng: Máy chủ tối thiểu 1 vCPU, 1GB RAM, 10GB dung lượng lưu trữ (Tương đương gói AWS EC2 t2.micro thuộc Free Tier).
  • Phần mềm: Hệ điều hành Linux (Ubuntu/CentOS), Web Server Apache 2.4 hoặc Nginx, PHP phiên bản từ 7.2 trở lên (khuyến nghị 7.4+), hệ quản trị CSDL MySQL 5.7+ hoặc MariaDB 10.3+.

2. Hệ thống có khả năng mở rộng (Scalability) khi lượng truy cập tăng đột biến như thế nào?

Nhờ kiến trúc MVC độc lập, hệ thống có thể mở rộng theo 2 hướng:

  • Mở rộng chiều dọc (Vertical Scaling): Nâng cấp cấu hình gói máy chủ EC2 (tăng RAM, CPU).
  • Mở rộng chiều ngang (Horizontal Scaling): Tách rời máy chủ Web và máy chủ CSDL sang dịch vụ Amazon RDS; sử dụng AWS S3 để lưu trữ hình ảnh tải lên và cấu hình Elastic Load Balancer (ELB) điều phối tải khi có hàng chục nghìn lượt truy cập đồng thời.

3. Làm thế nào để giải quyết vấn đề tin đăng ảo hoặc phòng đã được thuê hết?

Hệ thống sử dụng cơ chế kiểm soát 2 tầng:

  1. Mọi tin đăng mới bắt buộc phải qua hàng đợi phê duyệt (approve = 0) của Admin.
  2. Người dùng tìm phòng có thể sử dụng nút Báo cáo (Report) bài viết kèm lý do cụ thể (sai giá, đã cho thuê, lừa đảo). Khi số lượt báo cáo đạt ngưỡng quy định, hệ thống sẽ tự động hạ bài đăng và thông báo cho Quản trị viên xử lý.

4. Chi phí ước tính để vận hành website trong thực tế là bao nhiêu?

  • Năm đầu tiên có thể tận dụng gói AWS Free Tier (miễn phí 12 tháng gói EC2 t2.micro).
  • Chi phí duy trì tên miền .vn hoặc .com: khoảng 250.000 – 550.000 VNĐ/năm.
  • Chi phí máy chủ thương mại khi mở rộng (sau Free Tier): khoảng 150.000 – 300.000 VNĐ/tháng. Tổng mức đầu tư rất thấp, hoàn toàn khả thi cho các mô hình kinh doanh khởi nghiệp hoặc tổ chức sinh viên.

5. Website có hỗ trợ định vị chính xác vị trí phòng trọ trên bản đồ không?

Hệ thống lưu trữ tọa độ kinh độ và vĩ độ (latlng) của từng phòng trọ. Khi người dùng truy cập chi tiết bài đăng hoặc trang chủ, hệ thống sẽ tự động gọi API bản đồ để hiển thị điểm ghim trực quan, giúp người thuê dễ dàng hình dung lộ trình di chuyển đến nơi làm việc và học tập.


Kết luận

Đồ án tốt nghiệp "Thiết kế website đăng tin phòng trọ" của sinh viên Thân Trọng Hoài Phương (Chuyên ngành Công nghệ Kỹ thuật Máy tính - ĐH Sư phạm Kỹ thuật TP.HCM) đã 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.

Bằng việc kết hợp nhuần nhuyễn giữa kiến trúc phần mềm chuẩn mực Laravel MVC, hệ quản trị cơ sở dữ liệu MySQL, kỹ thuật giao diện hiện đại Responsive Bootstrap/AJAX và hạ tầng đám mây AWS, dự án đã cung cấp một giải pháp toàn diện, tối ưu hóa quá trình kết nối giữa người thuê và người cho thuê phòng trọ. Đồ án không chỉ khẳng định năng lực ứng dụng công nghệ thông tin vào giải quyết các bài toán xã hội cấp thiết mà còn mở ra nền tảng vững chắc cho các định hướng phát triển sàn thương mại điện tử bất động sản trong tương lai.