- 🎴 Tinder-style Card Triage:
- Quẹt phải để Giữ lại (Keep), quẹt trái để Đưa vào hàng chờ xóa (Delete).
- Xử lý cử chỉ vật lý mượt mà đạt chuẩn 60fps với độ nghiêng xoay theo lực kéo và ngưỡng vuốt tùy biến.
- 🔄 Physics-based Fly-in Undo Animation:
- Khi ấn nút Hoàn tác (Undo), thẻ ảnh không xuất hiện đột ngột mà lướt và xoay ngược trở lại ngăn xếp từ đúng hướng vừa bị quẹt ra ngoài màn hình (sử dụng spring physics không gây nhấp nháy).
- 🛡️ Safe Staging Review (Hàng đợi an toàn):
- Ảnh quẹt xóa được gom vào hộp "Ảnh Chờ Xóa" thay vì xóa vĩnh viễn ngay lập tức.
- Thanh tác vụ kép (Dual Action Bar): Cho phép người dùng Khôi phục (Restore) để giữ lại an toàn hoặc Xóa vĩnh viễn (Delete) kèm hộp thoại cảnh báo chống thao tác nhầm.
- 📳 Hardware Haptic Feedback:
- Tích hợp engine rung phần cứng đa nền tảng (
Vibratortrên Android vàUIImpactFeedbackGeneratortrên iOS). - Rung phản hồi tức thì khi vượt ngưỡng quẹt thẻ, khi bấm các nút hành động và khi kích hoạt toggle cài đặt.
- Tích hợp engine rung phần cứng đa nền tảng (
- 🔥 Streak & Storage Metrics:
- Gamification thúc đẩy thói quen dọn dẹp hàng ngày với chuỗi ngày liên tục (Streak) tính chuẩn xác theo múi giờ địa phương (Local Timezone).
- Thống kê trực quan tổng dung lượng bộ nhớ đã giải phóng và tỷ lệ giữ lại ảnh.
- 🔒 Privacy-First & 100% Offline:
- Không yêu cầu quyền Internet, không gửi dữ liệu ra máy chủ bên ngoài.
- Đọc và đồng bộ trực tiếp với thư viện ảnh hệ thống qua Android MediaStore API.
Dự án được xây dựng theo kiến trúc Clean Architecture kết hợp mô hình MVI/MVVM:
SwipeGallery/
├── composeApp/ # 100% Shared UI & Business Logic (KMP)
│ ├── commonMain/
│ │ ├── components/ # SwipeableCard, FullscreenViewer, PhotoView
│ │ ├── domain/models/ # PhotoItem, Album
│ │ ├── screens/ # DiscoverScreen, AlbumScreen, PendingReviewScreen, SettingsScreen
│ │ └── data/repository/ # PhotoRepo, SwipePreferences
│ ├── androidMain/ # Android Platform Implementations (Haptics, BackHandler)
│ └── iosMain/ # iOS Platform Implementations (Haptics, BackHandler)
└── androidApp/ # Android Application Entry Point
└── src/main/ # MainActivity, Permissions, Manifest
- Core Language: Kotlin 2.3.20 (Kotlin Multiplatform)
- UI Toolkit: Compose Multiplatform 1.10.3 (Jetpack Compose shared across platforms)
- Design System: Material Design 3 OLED Dark Theme
- Asynchronous: Kotlin Coroutines & StateFlow / SharedFlow
- Image Loading: Coil 2.7.0 (Async image fetching & cache management)
- Local Storage: Multiplatform Key-Value Preferences
- JDK: 17 hoặc mới hơn
- Android SDK: Compile SDK 37, Min SDK 30
- Android Studio: Ladybug / Koala hoặc IntelliJ IDEA mới nhất
-
Clone repository:
git clone https://github.com/plozdev/SwipeGallery.git cd SwipeGallery -
Chạy kiểm thử Unit Tests:
./gradlew testAndroidHostTest
-
Build file APK Debug / Demo:
./gradlew :androidApp:assembleDebug
File APK hoàn chỉnh sẽ được tạo tại:
androidApp/build/outputs/apk/debug/androidApp-debug.apk
Dự án được phân phối dưới giấy phép MIT License.


