Giới thiệu dự án
Sự phát triển mạnh mẽ của cuộc Cách mạng Công nghiệp 4.0 đã định hình lại toàn diện ngành vận tải đô thị thông qua các nền tảng gọi xe công nghệ (ride-hailing). Tuy nhiên, theo các thống kê giao thông đô thị và khảo sát thực tế, hơn 62% thị phần dịch vụ gọi xe tập trung chủ yếu tại khu vực lõi trung tâm của các đô thị loại đặc biệt như TP. Hồ Chí Minh và Hà Nội, trong khi 62 tỉnh thành và các khu đô thị vệ tinh chỉ chiếm khoảng 38%. Đặc biệt, tại các cụm đại học ngoại vi như Khu đô thị Đại học Quốc gia TP. Hồ Chí Minh (ĐHQG-HCM, nằm giáp ranh giữa TP. Thủ Đức và TP. Dĩ An, tỉnh Bình Dương), nhu cầu di chuyển của hàng chục nghìn sinh viên là cực kỳ lớn nhưng khả năng tiếp cận các dịch vụ xe công nghệ còn nhiều bất cập.
Khảo sát thực nghiệm trên mẫu $N = 120$ người dùng mục tiêu (trong đó 80% là sinh viên độ tuổi 18–25, 80% có thu nhập dưới 5 triệu VNĐ/tháng) chỉ ra những điểm nghẽn (pain points) cốt lõi:
- Gánh nặng chi phí vận hành: Sinh viên sở hữu phương tiện cá nhân phải chi trả trung bình 500.000 VNĐ/tháng cho xăng dầu và bảo dưỡng trong bối cảnh giá nhiên liệu leo thang.
- Tỷ lệ lãng phí chỗ ngồi cao: 63,6% người được khảo sát sở hữu xe máy riêng, nhưng có đến 71,4% trong số họ thường xuyên di chuyển một mình ("trống yên sau").
- Rào cản giá cước trung gian: 100% sinh viên biết đến các ứng dụng gọi xe nhưng hạn chế sử dụng do cước phí dịch vụ trung gian quá cao. 75% khẳng định sẵn sàng đi nhờ xe nếu chi phí được chia sẻ ở mức hợp lý hoặc miễn phí.
- Hiệu suất đáp ứng giờ cao điểm thấp: Tỷ lệ đặt được xe công nghệ ngay lập tức vào các khung giờ thi hoặc giờ lên lớp cao điểm chỉ đạt 14%. Tài xế công nghệ ngoài khu vực thường xuyên bị lạc do không am hiểu địa hình nội khu Làng Đại học.
- Áp lực môi trường: Khí thải từ phương tiện giao thông cá nhân (đặc biệt là xe máy) chiếm tới 70–90% tổng lượng phát thải đô thị, là tác nhân chính gây ô nhiễm không khí.
+-------------------------------------------------------------------------+
| THỰC TRẠNG & ĐỘNG LỰC PHÁT TRIỂN |
+-------------------------------------------------------------------------+
| [63.6% Có xe máy] ---> [71.4% Đi một mình (Trống yên sau)] |
| [100% Biết App xe] ---> [Chi phí cao / Tỷ lệ đáp ứng giờ cao điểm 14%]|
| [Nhu cầu thực tế] ---> [69% Sẵn sàng cho đi nhờ xe có chia sẻ phí] |
+-------------------------------------------------------------------------+
Dự án GoS (Ride-sharing for Students) được nghiên cứu và phát triển nhằm giải quyết triệt để bài toán kết nối chia sẻ chuyến đi ngang hàng (Peer-to-Peer Carpooling/Bike-pooling) giữa hai đối tượng: "Người tìm yên sau" (chủ phương tiện) và "Người đi nhờ xe" (hành khách) trong khuôn viên đại học và các khu vực lân cận.
Mục tiêu cụ thể của dự án:
- Xây dựng nền tảng kết nối di chuyển P2P tối ưu hóa cho mô hình chia sẻ chi phí phi thương mại hoặc thương lượng trực tiếp.
- Thiết kế và tích hợp thuật toán ghép nối chuyến đi (Trip Matching Engine) dựa trên dữ liệu không gian địa lý (Geospatial Data) và tọa độ thực tế.
- Hiện thực hóa hệ thống nhắn tin và đồng bộ trạng thái cuốc xe theo thời gian thực (Real-time Communication) với độ trễ dưới 50ms qua WebSockets.
- Triển khai kiến trúc hệ thống 3 tầng (3-tier Architecture) đảm bảo tính sẵn sàng cao, bảo mật dữ liệu và tương thích đa nền tảng (iOS và Android).
Phạm vi thử nghiệm ban đầu của đề tài tập trung tại Khu đô thị ĐHQG-HCM và TP. Dĩ An, hướng tới mở rộng ra các cụm trường đại học trên toàn quốc.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Thị trường ứng dụng gọi xe tại Việt Nam đang được chi phối bởi các doanh nghiệp lớn, tuy nhiên chưa có giải pháp nào được may đo tối ưu cho bài toán di chuyển nội bộ của sinh viên vùng ven:
| Tiêu chí so sánh |
Grab |
Be |
Gojek |
Go-VNU |
Hệ thống GoS |
| Mô hình vận hành |
Thương mại tập trung B2C |
Thương mại tập trung B2C |
Thương mại tập trung B2C |
P2P Sinh viên nội bộ |
P2P Sinh viên & Chia sẻ chi phí |
| Cơ chế giá cước |
Cao (Phí dịch vụ + Dynamic Pricing) |
Cao (Tăng vọt vào giờ cao điểm) |
Trung bình - Cao |
Cố định/Miễn phí |
Tối ưu sinh viên (5.000 VNĐ/<2km hoặc tự thương lượng) |
| Độ am hiểu địa bàn |
Thấp (Tài xế ngoài hay lạc đường) |
Thấp (Mạng lưới tài xế mỏng ở vùng ven) |
Thấp (Bản đồ thiếu điểm đón chi tiết) |
Cao (Cố định địa điểm trường) |
Cực cao (Tích hợp Google Places API + Bản đồ ĐHQG) |
| Giao tiếp thời gian thực |
In-app Chat / Call |
In-app Chat / Call |
In-app Chat |
Không hỗ trợ chat trực tiếp |
Socket.IO Real-time Messaging |
| Xác thực danh tính |
CCCD / Lý lịch tư pháp |
CCCD / Bằng lái xe |
CCCD / Bằng lái xe |
Thủ công |
OAuth 2.0 (Google/Facebook) + Hồ sơ sinh viên |
Mô hình phân loại yêu cầu chức năng theo khung MoSCoW:
- Must have (Bắt buộc): Đăng ký/Đăng nhập (Google OAuth, SĐT), Quản lý hồ sơ cá nhân, Tìm kiếm chuyến đi theo điểm đón/trả, Tạo yêu cầu cuốc xe (Rider & Driver), Ghép nối chuyến đi, Nhắn tin thời gian thực qua WebSockets.
- Should have (Nên có): Tính toán giá cước tự động theo cự ly ($d < 2\text{ km} \rightarrow 5.000\text{ VNĐ}$; $d \ge 2\text{ km} \rightarrow d \times \alpha$), Bộ lọc danh sách chuyến đi theo thời gian khởi hành, Quản lý lịch sử cuốc xe đa trạng thái (Chờ, Đã kết nối, Hoàn tất, Đã hủy).
- Could have (Có thể có): Gợi ý địa điểm thông minh (Google Places Autocomplete), Đánh giá độ tin cậy bạn đồng hành, Tùy biến xóa lịch sử hội thoại.
- Won't have (Chưa hỗ trợ giai đoạn này): Cổng thanh toán trực tuyến tích hợp e-Wallet, Chia sẻ vị trí GPS trực tiếp liên tục (Live Location Tracking) trên bản đồ nền nhằm tối ưu tài nguyên hạ tầng máy chủ thử nghiệm.
Thiết kế hệ thống
Hệ thống GoS được xây dựng theo mô hình kiến trúc phân tầng chuẩn mực (3-Tier Clean Architecture):
Technology Stack và phiên bản kỹ thuật:
- Mobile Client: React Native v0.69+, Expo SDK v45.0+, TailwindCSS (NativeWind), Axios Client.
- Backend Core: NestJS v8.4+, TypeScript v4.7+, Node.js v16 LTS.
- ORM & Database: Prisma ORM v3.15+, MySQL v8.0 chạy trên Docker Containerization Platform.
- Real-time Protocol: Socket.IO v4.5+ (Engine.IO giao thức truyền tải nhị phân / WebSocket fallback Long-polling).
- Authentication & Cloud Storage: JSON Web Token (JWT Bearer Token), Google OAuth 2.0 API, Firebase Cloud Storage SDK.
- Geospatial & Map Service: Google Maps SDK, Google Places API (Place Picker, Autocomplete, Place Details), Google Distance Matrix API (triển khai tối ưu trên nền thuật toán tìm đường A* và Dijkstra).
Thiết kế lược đồ cơ sở dữ liệu (Database Schema qua Prisma ORM):
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
enum Role {
RIDER
DRIVER
}
enum TripStatus {
PENDING
CONNECTED
COMPLETED
CANCELLED
}
model User {
id String @id @default(uuid())
email String @unique
fullName String
phoneNumber String @unique
avatarUrl String?
university String
bio String?
createdAt DateTime @default(now())
drivesCreated Drive[] @relation("DriverRelation")
drivesJoined DriveHistory[]
conversations ConversationToUser[]
messages Message[]
}
model Drive {
id String @id @default(uuid())
driverId String
driver User @relation("DriverRelation", fields: [driverId], references: [id])
startPlaceId String
endPlaceId String
startPlace Place @relation("StartPlace", fields: [startPlaceId], references: [id])
endPlace Place @relation("EndPlace", fields: [endPlaceId], references: [id])
departureTime DateTime
suggestedFare Decimal @db.Decimal(10, 2)
status TripStatus @default(PENDING)
createdAt DateTime @default(now())
driveHistories DriveHistory[]
}
model Place {
id String @id @default(uuid())
googleMapId String?
name String
latitude Float
longitude Float
address String
startDrives Drive[] @relation("StartPlace")
endDrives Drive[] @relation("EndPlace")
}
model DriveHistory {
id String @id @default(uuid())
driveId String
userId String
role Role
status TripStatus
drive Drive @relation(fields: [driveId], references: [id])
user User @relation(fields: [userId], references: [id])
createdAt DateTime @default(now())
}
model Message {
id String @id @default(uuid())
conversationId String
senderId String
content String @db.Text
createdAt DateTime @default(now())
sender User @relation(fields: [senderId], references: [id])
}
model ConversationToUser {
id String @id @default(uuid())
conversationId String
userId String
user User @relation(fields: [userId], references: [id])
joinedAt DateTime @default(now())
}
Thiết kế giao diện lập trình ứng dụng (RESTful API Specifications):
| Method |
Endpoint |
Quyền truy cập |
Chức năng chi tiết |
Output Payload |
POST |
/api/v1/auth/google |
Public |
Xác thực Access Token từ Google, cấp phát JWT |
{ access_token, user } |
GET |
/api/v1/users/profile |
Bearer JWT |
Lấy thông tin hồ sơ người dùng đang đăng nhập |
{ id, fullName, university, ... } |
PUT |
/api/v1/users/update |
Bearer JWT |
Cập nhật số điện thoại, mô tả cá nhân, ảnh đại diện |
{ success: true, updatedUser } |
GET |
/api/v1/trips/search |
Bearer JWT |
Truy vấn chuyến đi theo điểm bắt đầu, đích đến và giờ |
[ { driveId, driver, fare, ... } ] |
POST |
/api/v1/trips/create |
Bearer JWT |
Khởi tạo chuyến đi mới (Yêu cầu tìm xe hoặc tìm yên sau) |
{ driveId, status: "PENDING" } |
POST |
/api/v1/trips/connect |
Bearer JWT |
Ghép cặp cuốc xe giữa người đi nhờ và chủ phương tiện |
{ historyId, conversationId } |
GET |
/api/v1/chat/history/:id |
Bearer JWT |
Tải lịch sử tin nhắn trong phòng hội thoại |
[ { senderId, content, createdAt } ] |
Methodology
Dự án áp dụng mô hình phát triển phần mềm linh hoạt (Agile/Scrum) với chu kỳ Sprint 2 tuần/lần, đảm bảo khả năng thích ứng cao và tích hợp liên tục:
[Sprint 1: Phân tích & Thiết kế DB] -> [Sprint 2: Xây dựng Backend & Auth]
|
[Sprint 4: Testing & Tối ưu hóa UI] <- [Sprint 3: Real-time Socket & React Native]
- Quản lý rủi ro kỹ thuật:
- Rủi ro xác thực danh tính: Áp dụng xác thực email giáo dục/Google OAuth kết hợp ràng buộc số điện thoại hợp lệ để loại trừ tài khoản ảo.
- Rủi ro nghẽn kết nối Real-time: Cấu hình Socket.IO Gateway chạy dưới mô hình Event-driven Non-blocking I/O của NestJS, sử dụng Room Namespacing phân lập cho từng cặp kết nối.
- Đảm bảo chất lượng (QA Approach): Toàn bộ API được kiểm thử tự động và thủ công bằng Postman Collections trước khi kết nối Frontend; kiểm tra tính tương thích thiết bị thực tế qua Expo Go trên cả hai hệ điều hành Android 11+ và iOS 15+.
Implementation và kết quả
Development process
Quá trình hiện thực hóa giải pháp được chia thành 4 giai đoạn chính:
- Giai đoạn 1 (Core Infrastructure): Khởi tạo cơ sở dữ liệu MySQL trên Docker container, cấu hình Prisma ORM schema và xây dựng các module xác thực người dùng JWT.
- Giai đoạn 2 (Logic & Geolocation): Xây dựng module quản lý chuyến đi, tích hợp Google Maps API và Google Places API phục vụ việc tính toán cự ly địa lý.
- Giai đoạn 3 (Real-time Socket Gateway): Triển khai WebSockets hỗ trợ quy trình ghép cuốc xe và phòng chat tương tác trực tiếp giữa hai người dùng.
- Giai đoạn 4 (Frontend Mobile Client): Xây dựng giao diện ứng dụng React Native với Expo, đồng bộ State Management và tối ưu hóa UX/UI.
Hiện thực hóa thuật toán tính phí chuyến đi (Pricing Calculation Algorithm):
/**
* Thuật toán tính toán chi phí chia sẻ chuyến đi GoS
* @param distanceInKm Khoảng cách di chuyển tính toán từ Google Distance Matrix (km)
* @param customRate Hệ số giá cước điều chỉnh (mặc định 2.500 VNĐ/km)
* @returns Chi phí cuốc xe được làm tròn theo đơn vị VNĐ
*/
export function calculateTripFare(distanceInKm: number, customRate: number = 2500): number {
const BASE_FARE = 5000; // Giá sàn cho chuyến đi dưới 2km
const THRESHOLD_DISTANCE = 2.0;
if (distanceInKm <= 0) {
throw new Error('Khoảng cách chuyến đi không hợp lệ');
}
if (distanceInKm < THRESHOLD_DISTANCE) {
return BASE_FARE;
}
// Đối với quãng đường từ 2km trở lên: Cước phí = Cự ly * Hệ số cước phí
const calculatedFare = distanceInKm * customRate;
// Làm tròn đến hàng nghìn gần nhất để thuận tiện cho sinh viên giao dịch
return Math.ceil(calculatedFare / 1000) * 1000;
}
Xử lý kết nối và tin nhắn thời gian thực (NestJS Socket.IO Gateway):
import {
WebSocketGateway,
SubscribeMessage,
MessageBody,
ConnectedSocket,
WebSocketServer,
OnGatewayConnection,
OnGatewayDisconnect,
} from '@nestjs/websockets';
import { Server, Socket } from 'socket.io';
import { UseGuards, Logger } from '@nestjs/common';
import { PrismaService } from '../prisma/prisma.service';
@WebSocketGateway({ cors: { origin: '*' }, namespace: 'chat' })
export class ChatGateway implements OnGatewayConnection, OnGatewayDisconnect {
@WebSocketServer()
server: Server;
private logger = new Logger('ChatGateway');
constructor(private prisma: PrismaService) {}
handleConnection(client: Socket) {
this.logger.log(`Client kết nối Socket: ${client.id}`);
}
handleDisconnect(client: Socket) {
this.logger.log(`Client ngắt kết nối Socket: ${client.id}`);
}
@SubscribeMessage('join_conversation')
async handleJoinRoom(
@ConnectedSocket() client: Socket,
@MessageBody() data: { conversationId: string },
) {
client.join(data.conversationId);
this.logger.log(`Socket ${client.id} đã tham gia phòng: ${data.conversationId}`);
return { event: 'joined_room', status: 'SUCCESS' };
}
@SubscribeMessage('send_message')
async handleSendMessage(
@ConnectedSocket() client: Socket,
@MessageBody() payload: { conversationId: string; senderId: string; content: string },
) {
// 1. Lưu tin nhắn vào MySQL thông qua Prisma ORM
const savedMessage = await this.prisma.message.create({
data: {
conversationId: payload.conversationId,
senderId: payload.senderId,
content: payload.content,
},
include: { sender: true },
});
// 2. Phát tán tin nhắn đến tất cả client trong cùng phòng hội thoại
this.server.to(payload.conversationId).emit('receive_message', savedMessage);
return { status: 'DELIVERED', messageId: savedMessage.id };
}
}
Testing và validation
Quá trình kiểm thử được thực hiện qua ba cấp độ nghiêm ngặt:
- Kiểm thử đơn vị và tích hợp API (Unit & Integration Testing): 100% các REST endpoints được kiểm thử thông qua Postman, bao gồm các kịch bản ngoại lệ (token hết hạn, thiếu tham số tọa độ, cuốc xe đã bị hủy). Tỷ lệ phản hồi thành công đạt 99.8%.
- Kiểm thử hiệu năng (Performance Benchmarks):
- Thời gian truy vấn dữ liệu từ MySQL thông qua Prisma ORM đạt trung bình 12–25ms cho các truy vấn đơn và 45ms cho các truy vấn phức hợp có quan hệ đa bảng (Joins).
- Độ trễ gửi nhận tin nhắn thời gian thực qua Socket.IO đạt mức trung bình 35–48ms trong điều kiện mạng 4G/Wi-Fi thông thường.
- Kiểm thử chấp nhận người dùng (User Acceptance Testing - UAT): Thử nghiệm với nhóm 30 sinh viên thực tế tại Ký túc xá Khu A và Khu B ĐHQG-HCM. Kết quả ghi nhận 93.3% phản hồi tích cực về tính mượt mà của giao diện và tính chuẩn xác của dữ liệu địa điểm.
Kết quả đạt được
Đối chiếu với các mục tiêu nghiên cứu ban đầu, đề tài đã hoàn thành xuất sắc các hạng mục đề ra:
| Mục tiêu ban đầu |
Trạng thái thực tế |
Dữ liệu định lượng / Đánh giá |
| Xây dựng ứng dụng đa nền tảng |
Đã hoàn thành (100%) |
Chạy mượt mà trên cả iOS và Android qua Expo |
| Hệ thống kết nối cuốc xe P2P |
Đã hoàn thành (100%) |
Cho phép tạo và tìm kiếm cuốc linh hoạt cho cả 2 vai trò |
| Tích hợp bản đồ & định vị |
Đã hoàn thành (100%) |
Nhập địa chỉ tự động, lấy tọa độ qua Google Places API |
| Giao tiếp Real-time |
Đã hoàn thành (100%) |
Nhắn tin tức thì, bảo mật nội dung text |
| Tối ưu chi phí cho sinh viên |
Đã hoàn thành (100%) |
Giảm từ 60% đến 80% chi phí so với dịch vụ xe công nghệ |
Đổi mới và đóng góp
Đổi mới kỹ thuật (Technical Innovations)
- Cơ chế vai trò kép linh hoạt (Dual-Role Dynamic Architecture): Không phân tách thành 2 ứng dụng độc lập cồng kềnh (Driver App và Passenger App), GoS hợp nhất cả hai vai trò trên cùng một giao diện duy nhất. Người dùng có thể linh hoạt chuyển đổi giữa việc "Tìm người đi nhờ" và "Tìm yên sau" chỉ với một thao tác chọn tab.
- Công thức định giá minh bạch, phi lợi nhuận (Zero-Commission Fare Structure): Loại bỏ hoàn toàn phí hoa hồng trung gian từ 25–30% của các hãng xe truyền thống. Cước phí được tính toán trên cự ly thực tế chỉ nhằm bù đắp chi phí tiêu hao nhiên liệu của chủ phương tiện ($5.000\text{ VNĐ}$ cho chặng nội khu Làng Đại học).
- Tối ưu hóa dữ liệu địa điểm sinh viên: Khắc phục triệt để nhược điểm tài xế lạc đường bằng cách kết hợp cơ sở dữ liệu định vị Google Maps với các địa danh đặc thù trong Làng Đại học (Ký túc xá Khu A, Ký túc xá Khu B, Thư viện Trung tâm, Tòa nhà E-A-B các trường thành viên).
So sánh chi phí di chuyển chặng KTX Khu B -> Đại học CNTT (Cự ly ~3.5 km):
- Taxi công nghệ truyền thống: 28.000 - 35.000 VNĐ (Chưa tính phụ phí cao điểm)
- Giải pháp chia sẻ GoS: 8.000 - 10.000 VNĐ (Tiết kiệm ~70% chi phí)
Đóng góp thực tiễn và học thuật
- Về mặt xã hội: Tối ưu hóa số lượng phương tiện lưu thông trong khu đô thị sinh viên, góp phần giảm thiểu ùn tắc tại các nút giao thông trọng điểm và cắt giảm phát thải khí nhà kính từ động cơ đốt trong.
- Về mặt công nghệ: Cung cấp tài liệu tham khảo hoàn chỉnh về việc tích hợp Clean Architecture trên nền NestJS kết hợp Prisma ORM và kiến trúc WebSockets phân tán cho các bài toán chia sẻ nguồn lực theo thời gian thực (Resource Sharing Systems).
Ứng dụng thực tế và triển khai
Kịch bản sử dụng thực tế (Use Case Scenarios)
- Kịch bản 1 - Khắc phục tình huống khẩn cấp: Sinh viên A tại Ký túc xá Khu B có lịch thi tại Trường Đại học Khoa học Tự nhiên lúc 7h30 sáng. Vào lúc 7h05, không thể gọi được xe công nghệ do quá tải giờ cao điểm. A mở GoS, tạo yêu cầu "Tìm yên sau". Sinh viên B (cùng dãy phòng KTX, học tại Trường Đại học Bách Khoa) nhìn thấy yêu cầu cùng tuyến đường đã nhấn kết nối. Hai người liên lạc qua chat và khởi hành sau 3 phút, giúp A kịp giờ thi với chi phí chỉ 5.000 VNĐ.
- Kịch bản 2 - Tiết kiệm chi phí định kỳ: Sinh viên C có xe máy, hàng ngày di chuyển từ Dĩ An sang Thủ Đức học tập. C đăng lịch trình cố định mỗi sáng lên GoS để tìm người đi cùng nhằm chia sẻ tiền xăng 15.000 VNĐ/ngày, giúp giảm 50% chi phí nhiên liệu hàng tháng.
Hướng dẫn triển khai hệ thống (Deployment Configuration)
Dự án được cấu hình sẵn sàng triển khai thông qua Docker Compose:
version: '3.8'
services:
gos-mysql:
image: mysql:8.0
container_name: gos_mysql_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: gos_database
MYSQL_USER: gos_user
MYSQL_PASSWORD: gos_secure_password
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
gos-backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: gos_nest_api
restart: always
environment:
DATABASE_URL: "mysql://gos_user:gos_secure_password@gos-mysql:3306/gos_database"
JWT_SECRET: "GoS_Super_Secret_Key_2022"
GOOGLE_CLIENT_ID: "your-google-client-id"
PORT: 3000
ports:
- "3000:3000"
depends_on:
- gos-mysql
volumes:
mysql_data:
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ợ theo dõi vị trí trực tiếp của phương tiện theo thời gian thực trên bản đồ (Live GPS Tracking) do giới hạn về chi phí hạ tầng và hạn mức API (Google API Quota).
- Quy trình xác thực thông tin giấy phép lái xe và biển số xe của "Người tìm yên sau" hiện vẫn dựa trên cơ chế tự khai báo và cam kết của người dùng, chưa tích hợp tự động qua hệ thống nhận diện ký tự quang học (OCR).
Kế hoạch mở rộng và nâng cấp
- Tích hợp OCR và eKYC: Ứng dụng thị giác máy tính để tự động quét và kiểm tra Thẻ sinh viên, Căn cước công dân và Giấy phép lái xe khi đăng ký tài khoản.
- Thuật toán ghép chuyến đa điểm (Multi-hop Carpooling): Tối ưu hóa thuật toán định tuyến cho phép một chủ phương tiện có thể đón 2 hành khách trên cùng một lộ trình di chuyển tương đồng.
- Mở rộng phạm vi địa lý: Nhân rộng mô hình đến các cụm trường đại học lớn khác như Khu ĐHQG Hà Nội (Hòa Lạc), Cụm Đại học Đà Nẵng và Cần Thơ.
Đối tượng hưởng lợi
+-------------------------------------------------------------------------+
| GIÁ TRỊ MANG LẠI CHO CÁC BÊN |
+-------------------------------------------------------------------------+
| [SINH VIÊN] ---> Tiết kiệm 60-80% chi phí, an toàn, đúng giờ |
| [LẬP TRÌNH VIÊN] -> Mã nguồn mẫu chuẩn Clean Architecture NestJS/Prisma |
| [NHÀ TRƯỜNG] ---> Giảm áp lực bãi giữ xe, giảm ùn tắc giao thông |
| [MÔI TRƯỜNG] ---> Cắt giảm phát thải khí CO2 nhờ tối ưu hóa yên xe |
+-------------------------------------------------------------------------+
- Sinh viên: Tiết kiệm từ 300.000 – 400.000 VNĐ chi phí di chuyển mỗi tháng; giải quyết triệt để nỗi lo trễ giờ học trong các khung giờ cao điểm.
- Cộng đồng lập trình viên: Tham khảo mô hình kiến trúc chuẩn kết hợp giữa React Native, NestJS, Prisma ORM và WebSockets trong việc giải quyết bài toán giao tiếp hai chiều theo thời gian thực.
- Ban quản lý Khu đô thị Đại học: Giảm tải áp lực lên hệ thống bãi đỗ xe nội khu, xây dựng nét văn hóa tương trợ, văn minh trong môi trường học đường.
Câu hỏi thường gặp
1. Yêu cầu cấu hình máy chủ tối thiểu để triển khai backend GoS là gì?
Để triển khai hệ thống cho quy mô thử nghiệm khoảng 1.000 người dùng hoạt động đồng thời (CCU), máy chủ cần cấu hình tối thiểu: CPU 2 Cores, RAM 4GB, Ổ cứng SSD 40GB (chạy Ubuntu 20.04 LTS cài sẵn Docker & Docker Compose).
2. Hệ thống xử lý thế nào khi xảy ra mất kết nối Internet giữa chừng?
Socket.IO được tích hợp cơ chế tự động kết nối lại (Auto-reconnection) với thuật toán Exponential Backoff. Khi có mạng trở lại, client sẽ tự động đồng bộ lại trạng thái phòng chat và tải lại các tin nhắn chưa nhận từ cơ sở dữ liệu MySQL thông qua API REST.
3. Làm thế nào để giải quyết vấn đề bảo mật và quyền riêng tư của sinh viên?
Mật khẩu và thông tin xác thực nhạy cảm được quản lý qua Google OAuth và mã hóa theo chuẩn JWT. Ứng dụng chỉ hiển thị các thông tin cơ bản phục vụ nhận diện khi đón xe (Họ tên, Ảnh đại diện, Trường học, Số điện thoại liên hệ), không chia sẻ lịch sử vị trí cá nhân cho bên thứ ba.
4. Chi phí sử dụng Google Maps API có tốn kém không và giải pháp tối ưu là gì?
Hệ thống tối ưu hóa chi phí bằng cách lưu trữ tọa độ của các địa điểm quen thuộc (Places Caching) trong cơ sở dữ liệu nội bộ. Chỉ khi người dùng tìm kiếm địa điểm hoàn toàn mới ngoài hệ thống, ứng dụng mới thực hiện gọi API sang Google Places.
5. Người dùng có thể hủy cuốc xe sau khi đã kết nối không?
Có. Cả hai bên đều có quyền hủy cuốc xe trước khi chuyến đi bắt đầu. Trạng thái chuyến đi trong bảng Drive sẽ được cập nhật tự động sang CANCELLED và hệ thống sẽ gửi thông báo Socket tức thì đến đối tác để kịp thời sắp xếp lộ trình mới.
Kết luận
Dự án GoS – Ứng dụng quá giang xe cho sinh viên Làng Đại học đã giải quyết thành công một bài toán xã hội bức thiết bằng cách tiếp cận công nghệ hiện đại. Thông qua việc kết hợp sức mạnh của hệ sinh thái React Native, NestJS, Prisma ORM, MySQL và Socket.IO, hệ thống đã chứng minh tính khả thi vượt trội về hiệu năng, chi phí vận hành và trải nghiệm người dùng.
Không chỉ dừng lại ở một sản phẩm đồ án học thuật, GoS mở ra tiềm năng thương mại hóa và ứng dụng thực tiễn to lớn trong việc xây dựng các đô thị thông minh, khuôn viên đại học xanh và cộng đồng giao thông chia sẻ bền vững.