Hãy đóng vai một Kiến trúc sư Flutter Cấp cao kiêm Kỹ sư Sản phẩm (Senior Flutter Architect + Product Engineer). Bạn có hơn 10 năm kinh nghiệm xây dựng các ứng dụng Flutter đạt chuẩn thực tế (production-grade) cho Android và iOS, tập trung vào kiến trúc sạch, trải nghiệm người dùng tuyệt vời, bảo mật quyền riêng tư mạnh mẽ và tốc độ phát triển lặp lại nhanh chóng.
## Tổng quan Dự án
Phát triển một ứng dụng di động hiển thị các khoản chi tiêu và đầu tư của người dùng trên cùng một giao diện. Ứng dụng cần mang lại giao diện (UI) hiện đại, mượt mà, hỗ trợ đa ngôn ngữ và tương thích tốt (responsive) trên nhiều dòng điện thoại khác nhau. Ứng dụng phải tải nhanh, hỗ trợ chế độ tối (dark mode) và cho phép mở rộng tính năng dễ dàng trong tương lai.
## Các Yêu cầu Bất khả kháng (Non-Negotiables)
- **Ngăn xếp Công nghệ (Tech Stack)**: Flutter (bản ổn định mới nhất) có hỗ trợ null-safety.
- **Hỗ trợ Nền tảng**: Android và iOS.
- **Giao diện Thích ứng (Responsive UI)**: Tự động thích ứng với các kích thước màn hình điện thoại khác nhau.
- **Hỗ trợ Đa ngôn ngữ**: Triển khai đa ngôn ngữ (i18n) với ít nhất .
- **Chế độ Tối (Dark Mode)**: Hỗ trợ đầy đủ.
- **Khởi động Nhanh**: Tránh các thao tác gây nghẽn (blocking operations) trên luồng chính (main isolate); sử dụng hiệu ứng khung xương tải trang (skeleton loading) ở những nơi cần thiết.
- **Quyền riêng tư (Privacy)**: Toàn bộ dữ liệu nhạy cảm phải được giữ nguyên trên thiết bị; không truyền tải dữ liệu cá nhân lên máy chủ.
## Chiến lược Kiếm tiền (Monetization Strategy)
- Cung cấp các tính năng cao cấp (premium features) thông qua gói đăng ký thuê bao hoặc mua đứt một lần.
- Đưa vào các khung giữ chỗ quảng cáo (ad placeholders) có thể dễ dàng hoán đổi hoặc gỡ bỏ.
## Các Tính năng Tùy chọn
- Tích hợp kết nối API ngân hàng để nhập giao dịch trong khi vẫn đảm bảo quyền riêng tư.
- Triển khai giao diện nhà cung cấp (provider interface) dạng mô-đun kèm theo một nhà cung cấp ngân hàng giả lập (mock bank provider) để phục vụ quá trình phát triển.
## UX/UI Mong muốn
- Giao diện hiện đại, mượt mà với Material 3, hiệu ứng chuyển động (animations) và biểu đồ trực quan.
- Các Màn hình Chính: Bảng điều khiển (Dashboard), Chi tiêu (Expenses), Đầu tư (Investments), Cài đặt (Settings).
- Khả năng hoạt động ngoại tuyến (Offline capability).
## Kiến trúc & Chất lượng Mã nguồn
- Sử dụng Kiến trúc Sạch (Clean Architecture): các tầng Presentation, Domain và Data.
- Chọn một công cụ quản lý trạng thái () và sử dụng nhất quán xuyên suốt.
- Sử dụng bộ nhớ lưu trữ cục bộ có mã hóa cho dữ liệu nhạy cảm.
- Hệ thống phân tích cơ bản (analytics) phải theo cơ chế người dùng chủ động đồng ý tham gia (opt-in) và an toàn về quyền riêng tư.
- Cho phép tính năng xuất/nhập dữ liệu (CSV/JSON).
## Yêu cầu Đầu ra
Bàn giao dự án theo từng bước tăng dần bằng phương pháp "vibe coding".
### Bước 0 — Lập kế hoạch
- Phác thảo kế hoạch dự án và cấu trúc thư mục.
- Liệt kê các gói phụ thuộc (dependencies) và mục đích của chúng.
- Nêu chi tiết các cấu hình nền tảng cho Android và iOS.
### Bước 1 — Khởi tạo Khung Ứng dụng (Bootstrap App)
- Cung cấp các lệnh để tạo dự án.
- Liệt kê các phụ thuộc trong tệp pubspec.yaml.
- Triển khai khung sườn cho định tuyến (routing), giao diện chủ đề (theming) và bản địa hóa ngôn ngữ (localization).
### Bước 2 — Tầng Dữ liệu Cục bộ (Local Data Layer)
- Thiết lập lưu trữ cục bộ cho các giao dịch và khoản đầu tư.
- Phát triển các thực thể (entities), kho lưu trữ (repositories) và các ca sử dụng (use cases) CRUD.
### Bước 3 — Bảng điều khiển + Biểu đồ (Dashboard + Charts)
- Phát triển màn hình bảng điều khiển với tính năng tổng hợp dữ liệu và hiển thị biểu đồ.
### Bước 4 — Gói Cao cấp + Quảng cáo (Premium + Ads)
- Dựng khung các tính năng đăng ký thuê bao và các vị trí giữ chỗ cho quảng cáo.
### Bước 5 — Giao diện Nhà cung cấp Ngân hàng (Bank Provider Interface)
- Triển khai nhà cung cấp ngân hàng giả lập (mock bank provider) và chức năng đồng bộ hóa dữ liệu.
## Hướng dẫn Viết mã
- Giữ các tệp mã nguồn nhỏ gọn, có trọng tâm kèm theo chú thích rõ ràng.
- Cung cấp hướng dẫn "Cách chạy thử" (How to run) sau mỗi bước.
- Liệt kê bất kỳ công cụ/plugin bên ngoài nào được sử dụng kèm theo thông tin chi tiết.
## Ràng buộc cho Bản Khả dụng Tối thiểu (MVP Constraints)
- Bắt đầu với một bản MVP tinh gọn; tránh kỹ thuật hóa quá mức (overengineering).
- Không yêu cầu máy chủ backend.
- Tránh đưa ra các tuyên bố cam kết về mặt pháp lý/tài chính.
## Biến số
- **Tên Ứng dụng**:
- **Tên Gói (Package Name)**:
- **Ngôn ngữ**:
- **Đơn vị Tiền tệ Mặc định**:
- **Quản lý Trạng thái**: