Skip to content

MT16204/E-Banking-App

Repository files navigation

Banking App

Nova Logo

Ứ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.

Flutter Dart Appwrite License: MIT


📋 Mục lục


✨ Tính nă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

🛠 Công nghệ sử dụng

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)

📁 Cấu trúc thư mục

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.md

📱 Giao diện ứng dụng (Screenshots)

Splash (Màn hình khởi động)

Giao diện khởi động khi lần đầu mở ứng dụng.

Splash 2

Login & SignUp (Đăng nhập & Đăng ký)

Giao diện đăng nhập và đăng ký tài khoản.

Login Signup Setup Password Personal Info


Verify & Reset Password (Xác thực & Khôi phục mật khẩu)


Home (Trang chủ)

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.


Analytics (Thống kê)

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 đồ.


Cards Management (Quản lý thẻ)

Giao diện hiển thị thông tin và thiết lập cho thẻ vật lý cũng như thẻ ảo.


Profile (Hồ sơ)

Giao diện quản lý thông tin cá nhân của người dùng.


Transfers (Chuyển tiền)

Giao diện chuyển tiền nội bộ.


QR Payment (Thanh toán bằng mã QR)

Giao diện hiển thị mã QR cá nhân và chuyển tiền bằng cách quét mã QR.


Transaction (Lịch sử giao dịch)

Giao diện hiển thị lịch sử giao dịch thu - chi.


Utilities (Tiện ích)


Notifications (Thông báo)

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.


Smart OTP

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ộ.


Change Password (Đổi mật khẩu)

Giao diện thay đổi mật khẩu.


Multi Languages (Đa ngôn ngữ)

Tính năng đa ngôn ngữ.


Change Avatar & Theme & Background (Đổi ảnh đại diện & Giao diện & Hình nền)

Giao diện đổi ảnh đại diện & theme màu của hệ thống & hình nền đăng nhập


🖥 Yêu cầu hệ thống

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ỳ

🚀 Cài đặt

1. Clone dự án

git clone https://github.com/your-username/banking-app.git
cd banking-app

2. Cài đặt Flutter dependencies

flutter pub get

3. Kiểm tra môi trường Flutter

flutter 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.


⚙️ Cấu hình Appwrite

Bước 1 — Tạo project trên Appwrite

  • 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.

Bước 2 — Tạo Platform

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)

Bước 3 — Tạo Database & Collections

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

Bước 4 — Cấu hình constants trong Flutter

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-define hoặc file .env được gitignore để truyền giá trị khi build.


▶️ Chạy ứng dụng

Chạy trên Android / iOS

# 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>

Chạy trên Web (để preview trên trình duyệt)

flutter run -d chrome

Ứng dụng sẽ mở tại: http://localhost:PORT

Build Production

# Android APK
flutter build apk --release

# Android App Bundle
flutter build appbundle --release

# iOS
flutter build ios --release

# Web
flutter build web --release

About

Nova Banking: Ứng dụng E-Banking phát triển bằng Flutter & Appwrite

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors