An open source cardholder app to store you cards in one place.
The following terminology is used below:
- Cloud checksum - backup file name.
- Local checksum - sum of all card timestamps.
sequenceDiagram
participant Client
participant Cloud
Note over Client, Cloud: Getting cloud checksum
Client->>Cloud: Get cloud checksum
Cloud-->>Client: Cloud checksum
Note over Client: Comparison of checksums
Client->>Client: Compare Cloud checksum > Local checksum
alt New backup available
Note over Client, Cloud: Download backup file
Client->>Cloud: Get backup file
Cloud-->>Client: Backup file bytes
Note over Client: Import data from backup file
Client->>Client: Reading cards from a backup file
Client->>Client: Import cards into the database
Client->>Client: Backup downloaded successfully
else No download required
Note over Client: Skip Download
Client->>Client: Backup is up-to-date
end
sequenceDiagram
participant Client
participant Cloud
Note over Client, Cloud: Getting cloud checksum
Client->>Cloud: Get cloud checksum
Cloud-->>Client: Cloud checksum
Note over Client: Comparison of checksums
Client->>Client: Compare Cloud checksum < Local checksum
alt Cloud upload required
Note over Client: Writing a new backup file
Client->>Client: Export cards from the database
Client->>Client: Writing cards to a backup file
Note over Client, Cloud: Upload backup file
Client->>Cloud: Backup file bytes
Cloud-->>Client: OK
Client->>Client: Backup uploaded successfully
else No upload required
Note over Client: Skip Upload
Client->>Client: Backup is up-to-date
end
- Kotlin
- Android KTX - set of extensions that are included with Android Jetpack and other Android libraries
- Coroutines - recommended solution for asynchronous programming on Android
- Kotlin Flow - data flow across all app layers, including views
- Firebase
- Jetpack
- CameraX - camera capabilities
- Constraintlayout - position and size widgets in a flexible way with relative positioning
- Hilt - dependency injection
- Lifecycle - perform an action when lifecycle state changes
- Navigation - in-app navigation
- Room - store offline cache
- Coil - image loading library
- ZXing - barcode encoding/decoding library
- View Binding - retrieve xml view ids
- Material Design 3 - application design system providing UI components
- Dark Theme - dark theme for the app (Android 10+)
