Ứng dụng ngân hàng hiện đại được xây dựng bằng Flutter (đa nền tảng) và Appwrite (Backend-as-a-Service), hỗ trợ quản lý tài khoản, chuyển tiền và theo dõi giao dịch.
- Xem Demo trên Mobile View (F12 → Toggle Device Toolbar): https://e-banking-app-umber.vercel.app
- Tính năng
- Công nghệ sử dụng
- Cấu trúc thư mục
- Giao diện ứng dụng
- Yêu cầu hệ thống
- Cài đặt
- Cấu hình Appwrite
- Chạy ứng dụng
- 🔐 Đăng nhập / Đăng ký với Appwrite Auth (Email, OAuth2)
- 💰 Xem số dư tài khoản theo thời gian thực
- 📊 Thống kê & biểu đồ chi tiêu hàng tháng
- 💸 Chuyển tiền nội bộ và liên ngân hàng
- 🧾 Lịch sử giao dịch chi tiết (lưu trên Appwrite Database)
- 📱 Giao diện native trên Android & iOS, hỗ trợ Flutter Web
- 🔔 Thông báo giao dịch tức thì qua Appwrite Realtime
- 🤳 Thanh toán & nhận tiền bằng mã QR
- 💳 Quản lý thẻ vật lý và thẻ ảo
- 🛡️ Smart OTP xác thực giao dịch ngay trong app
- 🌐 Đa ngôn ngữ (Tiếng Việt, Tiếng Anh)
- 🎨 Tùy chỉnh Theme, Background và Avatar cá nhân
| Thành phần | Công nghệ |
|---|---|
| Framework | Flutter 3.x (Dart) |
| Backend-as-a-Service | Appwrite |
| Authentication | Appwrite Auth |
| Database | Appwrite Databases |
| Storage | Appwrite Storage |
| Realtime | Appwrite Realtime |
| State Management | Riverpod / Bloc |
| SDK | appwrite (Flutter package) |
banking-app/
├── assets/ # Tài nguyên (hình ảnh, media)
│
├── lib/
│ ├── core/ # Cấu hình chung, theme, đa ngôn ngữ
│ │ ├── config/
│ │ │ └── app_config.dart # Endpoint Appwrite, Project ID
│ │ ├── l10n/
│ │ │ └── app_lang.dart # Đa ngôn ngữ (i18n)
│ │ └── theme/ # Màu sắc & typography
│
│ ├── data/ # Tầng dữ liệu (models, repositories, services)
│ │ ├── models/ # Các model dữ liệu
│ │ ├── repositories/ # Xử lý logic truy xuất dữ liệu
│ │ └── services/ # Giao tiếp API / Appwrite
│
│ ├── features/ # Các module theo tính năng
│ │ ├── analytics/
│ │ │ ├── bloc/ # Quản lý state (BLoC)
│ │ │ └── screens/ # Giao diện
│ │ │
│ │ ├── auth/
│ │ │ ├── bloc/
│ │ │ └── screens/
│ │ │
│ │ ├── cards/
│ │ │ ├── bloc/
│ │ │ └── screens/
│ │ │
│ │ ├── home/
│ │ │ ├── bloc/
│ │ │ └── screens/
│ │ │
│ │ ├── notifications/
│ │ │ ├── bloc/
│ │ │ └── screens/
│ │ │
│ │ ├── payments/
│ │ │ ├── bloc/
│ │ │ └── screens/
│ │ │
│ │ ├── profile/
│ │ │ ├── bloc/
│ │ │ └── screens/
│ │ │
│ │ ├── security/
│ │ │ └── screens/
│ │ │
│ │ └── utilities/
│ │ └── screens/
│
│ ├── providers/ # State toàn cục (theme, user, ngôn ngữ)
│
│ ├── widgets/ # Component UI tái sử dụng
│ │ ├── nova_button.dart
│ │ ├── nova_textfield.dart
│ │ ├── balance_card.dart
│ │ ├── nav_bar.dart
│ │ └── ...
│
│ └── main.dart # Điểm khởi chạy ứng dụng
│
├── test/
│ └── widget_test.dart # Kiểm thử widget
│
├── Makefile # Lệnh build/run nhanh
├── vercel.json # Cấu hình deploy Flutter Web
├── pubspec.yaml # Khai báo dependencies
└── README.mdGiao diện khởi động khi lần đầu mở ứng dụng.
Giao diện đăng nhập và đăng ký tài khoản.
Giao diện màn hình chính tổng hợp thông tin bao gồm số dư tài khoản, các phím tắt nhanh, thống kê chi tiêu và giao dịch gần đây.
Giao diện thống kê, theo dõi dòng tiền và thói quen tiêu dùng bằng biểu đồ.
Giao diện hiển thị thông tin và thiết lập cho thẻ vật lý cũng như thẻ ảo.
Giao diện quản lý thông tin cá nhân của người dùng.
Giao diện chuyển tiền nội bộ.
Giao diện hiển thị mã QR cá nhân và chuyển tiền bằng cách quét mã QR.
Giao diện hiển thị lịch sử giao dịch thu - chi.
Giao diện thông báo hiển thị thông báo từ hệ thống và biến động giao dịch.
Giao diện tạo mã OTP xác thực giao dịch khi thực hiện luồng chuyển tiền nội bộ.
Giao diện thay đổi mật khẩu.
Tính năng đa ngôn ngữ.
Giao diện đổi ảnh đại diện & theme màu của hệ thống & hình nền đăng nhập
| Công cụ | Phiên bản tối thiểu |
|---|---|
| Flutter SDK | >= 3.10.x |
| Dart | >= 3.0.x |
| Appwrite Server | >= 1.5.x (self-hosted hoặc Cloud) |
| Xcode Simulator / VS Code | Mới nhất |
| Git | Bất kỳ |
git clone https://github.com/your-username/banking-app.git
cd banking-appflutter pub getflutter doctorĐảm bảo không có lỗi đỏ. Nếu thiếu Android SDK hoặc Xcode, làm theo hướng dẫn in ra trên terminal.
- Truy cập Appwrite Cloud hoặc tự host Appwrite.
- Tạo Project mới, đặt tên
banking-app. - Lấy Project ID từ trang Settings của project.
Trong project Appwrite, vào Settings → Platforms → Add Platform:
- Android: nhập
Application ID(ví dụ:com.example.bankingapp) - iOS: nhập
Bundle ID - Flutter Web: nhập hostname (ví dụ:
localhost)
Vào Databases → Create Database → đặt tên banking_db.
Tạo các Collection cần thiết:
| Collection | Mô tả |
|---|---|
users |
Tài khoản người dùng |
wallets |
Ví người dùng |
transactions |
Lịch sử giao dịch |
cards |
Thẻ ngân hàng |
notifications |
Thông báo hệ thống, biến động giao dịch |
Tạo file lib/core/constants/appwrite_constants.dart:
class AppwriteConstants {
static const String projectId = 'YOUR_PROJECT_ID';
static const String endpoint = 'https://cloud.appwrite.io/v1'; // hoặc URL self-hosted
static const String databaseId = 'YOUR_DATABASE_ID';
// Collection IDs
static const String accountsCollection = 'YOUR_ACCOUNTS_COLLECTION_ID';
static const String transactionsCollection = 'YOUR_TRANSACTIONS_COLLECTION_ID';
static const String usersProfileCollection = 'YOUR_USERS_PROFILE_COLLECTION_ID';
// Storage
static const String avatarBucketId = 'YOUR_BUCKET_ID';
}🔒 Lưu ý bảo mật: Không commit file chứa Project ID và secret lên public repository. Dùng
--dart-definehoặc file.envđược gitignore để truyền giá trị khi build.
# Xem danh sách thiết bị đang kết nối
flutter devices
# Chạy trên thiết bị cụ thể
flutter run -d <device_id>flutter run -d chromeỨng dụng sẽ mở tại: http://localhost:PORT
# Android APK
flutter build apk --release
# Android App Bundle
flutter build appbundle --release
# iOS
flutter build ios --release
# Web
flutter build web --release













































