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
- 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).
- 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).
- 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.
- 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 Injection và XSS (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
- 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.
- 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ế
- 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.
- 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.
- 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)
- 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.
- 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
- 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
- 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
- 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
- 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.
- Ứ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.
- 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:
- Mọi tin đăng mới bắt buộc phải qua hàng đợi phê duyệt (
approve = 0) của Admin.
- 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.