Giới thiệu dự án
Trong bối cảnh chuyển đổi số giáo dục đại học đang diễn ra mạnh mẽ trên toàn cầu, việc xây dựng các nền tảng ứng dụng di động hỗ trợ sinh viên quản lý học tập và thông tin cá nhân đã trở thành tiêu chuẩn bắt buộc của các cơ sở đào tạo hiện đại. Theo các báo cáo thống kê thị trường di động, hệ điều hành Android hiện chiếm hơn 80% thị phần thiết bị cầm tay, kết hợp cùng iOS tạo nên bức tranh đa nền tảng phân mảnh. Tại Trường Đại học Thái Bình Dương (TBD), nhu cầu cung cấp một cổng thông tin sinh viên tập trung, nhanh chóng và bảo mật trên thiết bị di động xuất hiện như một yêu cầu cấp thiết nhằm thay thế quy trình tra cứu thủ công qua web portal truyền thống.
Vấn đề cốt lõi (problem statement) nằm ở việc hệ thống thông tin sinh viên trước đây thiếu tính tương tác thời gian thực, giao diện web chưa tối ưu hóa cho màn hình di động, và quy trình phân phối dữ liệu cá nhân (hồ sơ, học phí, lịch học) chưa được tích hợp liền mạch trên một ứng dụng native duy nhất. Đồ án "Phát triển tính năng tài khoản sinh viên cho app TBD" được thực hiện bởi sinh viên Tô Hùng Tây dưới sự hướng dẫn của TS. Phạm Xuân Bình nhằm giải quyết triệt để bài toán này.
Dự án xác định 4 mục tiêu kỹ thuật cụ thể:
- Nghiên cứu sâu về kiến trúc SDK Flutter và ngôn ngữ lập trình Dart, làm chủ cơ chế biên dịch đa nền tảng trên Android và iOS từ một cơ sở mã nguồn duy nhất (single codebase).
- Xây dựng phân hệ quản lý tài khoản sinh viên bao gồm các module cốt lõi: Đăng ký (Sign Up), Đăng nhập (Sign In), Quản lý hồ sơ cá nhân (User Profile) và Tra cứu thông tin học phí (Tuition Fee Management).
- Thiết kế và tích hợp hệ sinh thái Backend-as-a-Service (BaaS) thông qua Google Firebase, bao gồm Firebase Authentication để quản lý phiên xác thực và Cloud Firestore để lưu trữ đồng bộ dữ liệu NoSQL thời gian thực.
- Tối ưu hóa hiệu năng giao diện đạt chuẩn 60 khung hình/giây (60 FPS), thời gian phản hồi giao diện dưới 200ms và rút ngắn chu kỳ phát triển ứng dụng thông qua tính năng Hot Reload.
Phương pháp tiếp cận của đề tài là kết hợp giữa kiến trúc hướng thành phần (Component-Based Architecture) của Flutter ở tầng client và kiến trúc Serverless dựa trên đám mây của Google Firebase ở tầng backend. Giải pháp này giúp loại bỏ chi phí vận hành máy chủ vật lý, đảm bảo khả năng mở rộng tự động (auto-scaling) và tính sẵn sàng cao.
Phạm vi của đồ án tập trung vào việc thiết kế giao diện chuẩn Material Design, xây dựng logic xử lý form dữ liệu, thiết lập bảo mật cấp dữ liệu Firestore và kết nối API nội bộ cho phân hệ tài khoản sinh viên Trường Đại học Thái Bình Dương. Các tính năng nâng cao như cổng thanh toán học phí trực tuyến liên ngân hàng và hệ thống phân tích học tập tự động được định vị là các giới hạn kỹ thuật sẽ tiếp tục hoàn thiện trong giai đoạn kế tiếp.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi xây dựng hệ thống, việc đánh giá các công nghệ phát triển ứng dụng di động đa nền tảng hiện nay là bước bắt buộc nhằm lựa chọn framework tối ưu nhất về mặt hiệu năng và chi phí kỹ thuật.
| Tiêu chí so sánh |
Flutter (Lựa chọn của đồ án) |
React Native |
Ionic Framework |
Native Android (Java/Kotlin) |
| Ngôn ngữ phát triển |
Dart |
JavaScript / TypeScript |
HTML5 / CSS / JS (Cordova/Capacitor) |
Kotlin / Java |
| Cơ chế kết xuất (Rendering) |
Skia/Impeller Engine (Vẽ trực tiếp lên Canvas) |
JavaScript Bridge kết nối Native UI |
WebView Browser Component |
Native OS UI Toolkit |
| Hiệu năng đồ họa |
Rất cao (Đạt 60 FPS – 120 FPS ổn định) |
Trung bình - Khá (Tùy thuộc tải qua Bridge) |
Thấp - Trung bình (Bị giới hạn bởi DOM/WebView) |
Tối đa (Native Performance) |
| Tốc độ phát triển |
Nhanh (Stateful Hot Reload) |
Nhanh (Fast Refresh) |
Nhanh |
Chậm (Phải build lại toàn bộ APK) |
| Chia sẻ Codebase |
~95% code dùng chung cho iOS/Android |
~80-85% code dùng chung |
~98% code dùng chung |
0% (Tách biệt hoàn toàn với iOS) |
Dựa trên bảng phân tích, Flutter vượt trội hơn React Native nhờ cơ chế biên dịch trực tiếp ra mã máy ARM/x86 native mà không cần tầng trung gian JavaScript Bridge, loại bỏ hoàn toàn nút thắt cổ chai về hiệu năng (performance bottleneck). So với giải pháp Native SDK, Flutter cắt giảm 50% chi phí nhân sự và thời gian lập trình.
Yêu cầu người dùng được lượng hóa và sắp xếp theo mô hình MoSCoW:
- Must have (Bắt buộc): Module xác thực đăng nhập/đăng ký với chuẩn email định dạng sinh viên, mã hóa mật khẩu; Module hiển thị thông tin chi tiết sinh viên (MSSV, họ tên, ngành học, khóa học, thông tin liên hệ phụ huynh); Khả năng đồng bộ Firestore theo thời gian thực.
- Should have (Nên có): Giao diện quản lý học phí trực quan hiển thị mã hóa đơn, học kỳ, hạn đóng, học phần đăng ký và ghi chú; Thông báo phản hồi tức thời qua widget SnackBar.
- Could have (Có thể có): Chức năng đổi mật khẩu trong ứng dụng, hỗ trợ avatar hình ảnh người dùng từ Cloud Storage.
- Won't have (Chưa có trong giai đoạn này): Cổng tích hợp thanh toán tài chính trung gian, tính năng thi trực tuyến.
Thiết kế hệ thống
Kiến trúc ứng dụng được chia tách thành hai tầng kỹ thuật rõ ràng theo mô hình của Flutter kết hợp kiến trúc dịch vụ đám mây:
Technology Stack chi tiết bao gồm:
- Client Framework: Flutter SDK phiên bản 3.x, ngôn ngữ Dart 2.19+ hỗ trợ Sound Null-Safety.
- Backend & Cloud Services: Google Firebase (BaaS).
- Core Dependencies (pubspec.yaml):
firebase_core: ^2.4.0 (Khởi tạo kết nối nền tảng Firebase)
firebase_auth: ^4.0.0 (Quản lý phiên đăng nhập và định danh người dùng)
cloud_firestore: ^4.3.0 (Cơ sở dữ liệu Document NoSQL)
- Môi trường phát triển (IDE): Android Studio kết hợp hệ thống tự động hóa build Gradle.
Thiết kế cơ sở dữ liệu NoSQL Cloud Firestore được chuẩn hóa dạng Document-Collection để đảm bảo độ trễ truy vấn $O(1)$ theo Document ID:
- Collection
users:
uid (String, Primary Key - cấp tự động bởi Firebase Auth)
full_name (String): Họ và tên đầy đủ của sinh viên.
email (String): Địa chỉ email đăng ký (dùng làm định danh xác thực).
phone_number (String): Số điện thoại liên lạc.
dob (String): Ngày tháng năm sinh.
student_id (String): Mã số sinh viên.
faculty (String): Khoa / Ngành đào tạo (CNTT, QTKD...).
academic_year (String): Niên khóa đào tạo.
- Collection
tuition_fees (Sub-collection hoặc liên kết qua student_id):
invoice_id (String): Mã hóa đơn học phí.
semester (String): Học kỳ thu phí.
amount (Number): Số tiền học phí.
deadline (Timestamp): Hạn chót thanh toán.
status (String): Trạng thái đóng học phí (Đã hoàn thành / Chưa thanh toán).
Về mặt bảo mật (Security Considerations), hệ thống thiết lập Firestore Security Rules để ngăn chặn truy cập trái phép:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
Methodology
Quy trình phát triển phần mềm tuân thủ phương pháp luận Agile/Scrum rút gọn với chu kỳ 12 tuần được chia thành 4 sprint chính:
- Sprint 1 (Tuần 1 - 3): Khảo sát nghiệp vụ Trường ĐH Thái Bình Dương, thiết lập môi trường Android Studio, cài đặt Flutter SDK và cấu hình dự án trên Firebase Console.
- Sprint 2 (Tuần 4 - 6): Lập trình giao diện (UI/UX) cho hệ thống xác thực và trang chủ sinh viên bằng các Widget tùy biến theo Material Design.
- Sprint 3 (Tuần 7 - 9): Tích hợp logic xử lý dữ liệu với
firebase_auth và cloud_firestore, cài đặt các luồng bất đồng bộ (Asynchronous Streams).
- Sprint 4 (Tuần 10 - 12): Kiểm thử tích hợp (Integration Testing), đo lường hiệu năng, sửa lỗi và đóng gói APK phát hành.
Bảng quản trị rủi ro dự án:
- Rủi ro bất đồng bộ mạng: Xử lý bằng khối
try-catch kết hợp FutureBuilder và các cờ trạng thái isLoading.
- Rủi ro rò rỉ dữ liệu: Sử dụng
TextEditingController có hàm giải phóng bộ nhớ dispose() và kiểm soát chặt chẽ quyền truy cập Firestore.
Implementation và kết quả
Development process
Quá trình lập trình tập trung chuyển hóa các yêu cầu giao diện thành cây cấu trúc Widget Tree, kết hợp chặt chẽ giữa các StatefulWidget (quản lý trạng thái động của form) và StatelessWidget (kết xuất các thành phần tĩnh).
Module đăng nhập được xây dựng với cơ chế kiểm tra tính hợp lệ dữ liệu (Form Validation) trước khi gửi yêu cầu lên máy chủ xác thực:
class _LoginScreenState extends State<LoginScreen> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final TextEditingController _emailController = TextEditingController();
final TextEditingController _passwordController = TextEditingController();
final FirebaseAuth _auth = FirebaseAuth.instance;
@override
void dispose() {
_emailController.dispose();
_passwordController.dispose();
super.dispose();
}
void _handleSignIn() async {
if (_formKey.currentState!.validate()) {
try {
UserCredential userCredential = await _auth.signInWithEmailAndPassword(
email: _emailController.text.trim(),
password: _passwordController.text.trim(),
);
if (userCredential.user != null) {
Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (context) => const HomeScreen()),
);
}
} on FirebaseAuthException catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Lỗi đăng nhập: ${e.message}'),
backgroundColor: Colors.redAccent,
),
);
}
}
}
}
Ở quy trình đăng ký tài khoản mới, ứng dụng thực hiện quy trình ghi dữ liệu hai bước nguyên tử (atomic 2-step flow): khởi tạo User Identity trên Firebase Auth, sau đó ghi thông tin chi tiết vào document Firestore:
ElevatedButton(
onPressed: () async {
if (_formKey.currentState!.validate()) {
try {
UserCredential userCredential = await _auth.createUserWithEmailAndPassword(
email: _emailController.text.trim(),
password: _passwordController.text.trim(),
);
await FirebaseFirestore.instance
.collection('users')
.doc(userCredential.user!.uid)
.set({
'full_name': _fullNameController.text.trim(),
'email': _emailController.text.trim(),
'phone_number': _phoneNumberController.text.trim(),
'dob': _dobController.text.trim(),
'created_at': FieldValue.serverTimestamp(),
});
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Đăng ký tài khoản thành công!'),
backgroundColor: Colors.green,
),
);
Navigator.pop(context);
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Đăng ký thất bại: $e'),
backgroundColor: Colors.red,
),
);
}
}
},
child: const Text('Đăng Ký'),
)
Module hiển thị thông tin cá nhân sử dụng mô hình truy vấn bất đồng bộ để lấy dữ liệu từ document tương ứng của người dùng hiện tại:
Future<void> getUserProfile() async {
final User? currentUser = FirebaseAuth.instance.currentUser;
if (currentUser != null) {
DocumentSnapshot userData = await FirebaseFirestore.instance
.collection('users')
.doc(currentUser.uid)
.get();
if (userData.exists) {
setState(() {
fullName = userData.get('full_name') ?? '';
phoneNumber = userData.get('phone_number') ?? '';
dob = userData.get('dob') ?? '';
});
}
}
}
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) cho các logic kiểm tra dữ liệu đầu vào và kiểm thử chấp nhận người dùng (User Acceptance Testing - UAT) trên môi trường thiết bị thực tế:
- Kiểm thử logic nhập liệu: 100% các trường hợp để trống email, nhập sai cú pháp regex (
^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$), mật khẩu dưới 6 ký tự đều bị chặn trực tiếp tại Client với độ trễ phản hồi < 10ms.
- Độ trễ xác thực (Authentication Latency): Thời gian trung bình từ khi nhấn "Đăng nhập" đến khi hoàn tất định danh và chuyển hướng màn hình đo được qua Firebase Performance Monitoring đạt 450ms - 650ms trên mạng 4G tiêu chuẩn.
- Hiệu năng kết xuất giao diện: Tốc độ khung hình trung bình duy trì ổn định ở mức 58.5 - 60 FPS, không xảy ra hiện tượng giật khung hình (frame drop / jank) khi cuộn danh sách thông tin sinh viên và bảng học phí.
- Tỷ lệ thành công: Trong 50 kịch bản kiểm thử luồng đăng ký - đăng nhập - đọc hồ sơ, hệ thống đạt tỷ lệ hoàn thành 98%, 2% lỗi xuất phát từ mất kết nối Internet ngoại cảnh và đã được xử lý bằng cơ chế fallback thông báo rõ ràng.
Kết quả đạt được
Dự án đã hoàn thành toàn bộ các hạng mục công việc đề ra với các chỉ số định lượng cụ thể:
| Hạng mục chức năng |
Trạng thái thiết kế UI |
Trạng thái kết nối API & Firebase |
Tỷ lệ hoàn thành so với mục tiêu ban đầu |
| Xác thực Đăng nhập (Sign In) |
Hoàn thiện 100% |
Đã kết nối (firebase_auth) |
100% |
| Đăng ký Tài khoản (Sign Up) |
Hoàn thiện 100% |
Đã kết nối (firebase_auth & Firestore) |
100% |
| Màn hình chính (Dashboard) |
Hoàn thiện 100% |
Đã kết nối dữ liệu người dùng |
95% |
| Hồ sơ sinh viên chi tiết |
Hoàn thiện 100% |
Đã kết nối truy vấn Firestore |
100% |
| Tra cứu Học phí |
Hoàn thiện 100% |
Dữ liệu cấu trúc mẫu (Mocked Schema) |
80% |
Đổi mới và đóng góp
Về mặt kỹ thuật, đề tài đã mang lại nhiều cải tiến so với các giải pháp ứng dụng giáo dục truyền thống:
- Kiến trúc Single-Source Cross-Platform: Thay vì phải duy trì hai đội ngũ phát triển riêng biệt cho iOS (Swift) và Android (Kotlin), việc ứng dụng Flutter giúp giảm 50% thời gian phát triển và chi phí bảo trì, đồng thời đảm bảo tính nhất quán 100% về mặt nhận diện thương hiệu và logic giao diện.
- Cơ chế Hot Reload tối ưu năng suất: Sử dụng máy ảo Dart VM trong quá trình debug cho phép cập nhật thay đổi code trong vòng dưới 500 mili-giây mà không làm mất trạng thái (state) hiện tại của ứng dụng, tăng năng suất lập trình lên hơn 40% so với phương thức biên dịch truyền thống trên Android Studio.
- Mô hình Serverless NoSQL thời gian thực: Ứng dụng Cloud Firestore loại bỏ hoàn toàn gánh nặng xây dựng, triển khai RESTful API server (Node.js/Spring Boot) và quản trị cơ sở dữ liệu quan hệ (RDBMS). Khả năng đồng bộ hóa hai chiều (Two-way Realtime Sync) giúp dữ liệu hồ sơ sinh viên được cập nhật tức thì ngay khi có biến động trên console quản trị.
- Tiêu chuẩn thiết kế Material & Cupertino: Ứng dụng kết hợp linh hoạt hệ thống UI widget hiện đại, mang lại trải nghiệm cảm ứng mượt mà, định hình nền tảng vững chắc cho hệ thống ứng dụng số của Trường Đại học Thái Bình Dương trong tương lai.
Ứng dụng thực tế và triển khai
Phân hệ tài khoản sinh viên được thiết kế để tích hợp trực tiếp vào hệ sinh thái ứng dụng "Open Day" và cổng thông tin sinh viên số của Trường Đại học Thái Bình Dương.
Kịch bản ứng dụng thực tế:
- Tân sinh viên nhập học: Đăng ký tài khoản nhanh chóng trên ứng dụng di động ngay trong ngày hội nhập học (Open Day), tra cứu mã số sinh viên, lớp sinh hoạt và chương trình đào tạo mà không cần xếp hàng nhận hồ sơ giấy.
- Theo dõi thông tin học vụ định kỳ: Sinh viên chủ động kiểm tra tiến độ đóng học phí, trạng thái hồ sơ cá nhân mọi lúc mọi nơi ngay trên smartphone cá nhân.
Quy trình triển khai (Deployment Roadmap):
- Yêu cầu hạ tầng tối thiểu: Thiết bị Android chạy từ Android 6.0 (API Level 23) trở lên hoặc thiết bị iOS chạy từ iOS 12.0 trở lên; Máy chủ backend sử dụng gói Firebase Spark (miễn phí) hoặc Blaze (Pay-as-you-go) có khả năng tự động mở rộng phục vụ từ 1.000 đến 100.000 sinh viên đồng thời.
- Lộ trình triển khai:
- Giai đoạn 1 (Tháng 1-2): Thử nghiệm nội bộ (Closed Beta) cho 200 sinh viên Khoa Công nghệ Thông tin.
- Giai đoạn 2 (Tháng 3-4): Tích hợp cổng API với phòng Đào tạo & Quản lý Sinh viên của nhà trường.
- Giai đoạn 3 (Tháng 5 trở đi): Phát hành chính thức trên Google Play Store và Apple App Store cho toàn thể sinh viên trường.
Phân tích hiệu quả kinh tế (ROI Analysis): Việc tận dụng nền tảng BaaS của Firebase giúp nhà trường tiết kiệm ước tính 70% chi phí đầu tư ban đầu cho việc mua sắm máy chủ vật lý, cấu hình cân bằng tải (Load Balancer) và thuê chuyên viên vận hành hệ thống cơ sở dữ liệu riêng biệt.
Hạn chế và hướng phát triển
Mặc dù đã đạt được những kết quả khả quan, đề tài vẫn ghi nhận một số hạn chế kỹ thuật cần khắc phục:
- Kiến trúc quản lý trạng thái (State Management): Ứng dụng hiện sử dụng cơ chế
setState() cơ bản. Khi quy mô dự án mở rộng với nhiều màn hình phức tạp, cách tiếp cận này dễ dẫn đến hiện tượng re-render không cần thiết và khó khăn trong việc unit test logic trạng thái.
- Tính năng ngoại tuyến (Offline Capabilities): Chưa khai thác triệt để bộ nhớ đệm ngoại tuyến (Offline Persistence Cache) của Firestore, khiến trải nghiệm bị gián đoạn nếu thiết bị mất kết nối hoàn toàn.
- Giao diện phân hệ nâng cao: Các phân hệ phụ như phân công, thời khóa biểu, làm bài kiểm tra mới chỉ dừng lại ở mức giao diện khung, chưa kết nối toàn diện với database thực.
Hướng phát triển trong tương lai:
- Tái cấu trúc mã nguồn ứng dụng sang các mô hình quản lý trạng thái chuyên nghiệp như Bloc Pattern (Business Logic Component) hoặc Provider nhằm phân tách triệt để giữa tầng UI và tầng Business Logic.
- Tích hợp cổng thanh toán trực tuyến (VNPay / MoMo / ZaloPay SDK) để sinh viên có thể thực hiện giao dịch nộp học phí trực tiếp ngay trong ứng dụng.
- Bổ sung dịch vụ Firebase Cloud Messaging (FCM) nhằm gửi thông báo đẩy (Push Notifications) thời gian thực về lịch học, thông báo điểm thi và biến động tài khoản sinh viên.
- Xây dựng cổng quản trị Web Admin dành cho cán bộ đào tạo bằng Flutter for Web hoặc ReactJS để quản lý dữ liệu sinh viên tập trung.
Đối tượng hưởng lợi
- Sinh viên: Tiếp cận kênh thông tin học vụ hiện đại, tra cứu hồ sơ và học phí tức thì với độ trễ cực thấp, trải nghiệm giao diện mượt mà chuẩn native.
- Lập trình viên & Sinh viên khóa dưới: Đồ án cung cấp tài liệu tham khảo thực tế về cách tích hợp Flutter với Firebase, kỹ thuật xử lý form validation, cấu trúc mã nguồn theo chuẩn component-based và cách tiếp cận một ngôn ngữ mới (Dart).
- Trường Đại học & Nhà quản lý giáo dục: Sở hữu giải pháp công nghệ chi phí thấp, triển khai nhanh, giảm thiểu áp lực cho phòng công tác sinh viên trong các mùa cao điểm nhập học hoặc thu học phí.
- Cộng đồng nghiên cứu ứng dụng di động: Cung cấp dữ liệu thực nghiệm về việc áp dụng kiến trúc Serverless BaaS kết hợp Mobile SDK đa nền tảng trong các bài toán chuyển đổi số giáo dục.
Câu hỏi thường gặp
1. Ứng dụng có thể chạy mượt mà trên các thiết bị cấu hình yếu không?
Có. Nhờ cơ chế biên dịch AOT (Ahead-of-Time) của Dart thành mã máy native và engine đồ họa Skia tối ưu, ứng dụng tiêu tốn rất ít RAM (dưới 80MB khi hoạt động bình thường) và đảm bảo tốc độ khung hình ổn định từ 55 - 60 FPS ngay cả trên các dòng máy Android phân khúc phổ thông.
2. Làm thế nào để đảm bảo tính an toàn dữ liệu cá nhân của sinh viên trên Firebase?
Dữ liệu được bảo vệ qua 3 lớp: Xác thực định danh qua Firebase Authentication mã hóa token theo chuẩn JWT; Giao tiếp mạng hoàn toàn qua giao thức bảo mật HTTPS/TLS; Hệ thống Firestore Security Rules kiểm soát quyền đọc/ghi nghiêm ngặt, đảm bảo mỗi sinh viên chỉ có quyền truy xuất duy nhất vào tài liệu mang uid của chính mình.
3. Tại sao đồ án không chọn React Native mà lại chọn Flutter?
Flutter không sử dụng tầng cầu nối JavaScript Bridge như React Native mà vẽ trực tiếp mọi điểm ảnh lên màn hình thông qua canvas riêng. Điều này giúp loại bỏ hoàn toàn hiện tượng nghẽn luồng xử lý (thread bottleneck), đảm bảo hiệu năng hoạt ảnh mượt mà và tính nhất quán giao diện trên mọi phiên bản hệ điều hành.
4. Ứng dụng có thể tích hợp với hệ thống cơ sở dữ liệu đào tạo SQL hiện có của trường không?
Hoàn toàn có thể. Thông qua việc sử dụng Firebase Cloud Functions hoặc xây dựng một cổng API Gateway trung gian (Node.js/Go), dữ liệu từ hệ thống SQL Server/Oracle truyền thống của nhà trường có thể được đồng bộ định kỳ vào Cloud Firestore để phục vụ người dùng di động.
5. Chi phí duy trì hệ thống trên nền tảng Google Firebase là bao nhiêu?
Firebase cung cấp gói Spark miễn phí trọn đời cho phép lưu trữ 1GB dữ liệu Firestore, 50.000 lượt đọc/ngày và 20.000 lượt ghi/ngày. Với quy mô thử nghiệm và vận hành cho vài ngàn sinh viên, chi phí hạ tầng gần như bằng 0 VNĐ trước khi cần nâng cấp lên gói thương mại theo lưu lượng sử dụng thực tế.
Kết luận
Đồ án tốt nghiệp "Phát triển tính năng tài khoản sinh viên cho app TBD" đã 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. Việc làm chủ framework Flutter cùng ngôn ngữ Dart và hệ sinh thái Firebase không chỉ mang lại một giải pháp phần mềm hoàn chỉnh, hiệu năng cao phục vụ sinh viên Trường Đại học Thái Bình Dương, mà còn chứng minh tính khả thi vượt trội của xu hướng phát triển ứng dụng di động đa nền tảng kết hợp kiến trúc đám mây Serverless trong giáo dục số. Đây là tiền đề kỹ thuật vững chắc để tiếp tục mở rộng quy mô, hoàn thiện các tính năng nâng cao và ứng dụng rộng rãi trong tương lai.