Lightweight digital wallet to securely scan, store, and manage loyalty cards offline.
- 100% Offline & Private: No tracking, no data collection, and no internet connection required to manage your cards.
- Fast Barcode Scanning: Easily scan physical cards using your device's camera or import them from images.
- Encrypted Storage: Protect your sensitive cards and data with password-secured local encryption.
- Screen Brightness Control: Automatically adjusts your screen brightness when displaying a card for seamless scanning at checkout counters.
- Import & Export: Take full control of your data with easy backup and restore options.
- Modern, Lightweight UI: Fast, clean design optimized for daily use without bloat.
More info here
OR
- β¬οΈ Download latest official release β¬οΈ.
- Locate the "cardabase-(version you got).apk" file (usually in the Internal storage/Downloads folder).
- Allow installing apps from unknown sources.
- Install it by clicking on the "Install" button.
Note
F-Droid releases might not be in sync with those from GitHub.
Try the interactive web preview here!
Note
The web demo is automatically compiled from the latest codebase to showcase upcoming and experimental features. Because it runs directly in the browser, platform-native capabilities (such as hardware camera scanning or device storage) may be limited or behave differently than on Android.
- add a counter to every card, so when card is clicked, it would add a point, then this could be used to sort by the most used cards
- custom color theme, custom theme builder
- advanced front image editor
- idk, let me know via issues ;)
Currently, the app uses these permissions (+ why are they needed) :
- android.permission.WRITE_EXTERNAL_STORAGE - used by the storage system to save the app's data, mandatory
- android.permission.READ_EXTERNAL_STORAGE - used by the storage system to save the app's data, mandatory
- android.permission.MANAGE_EXTERNAL_STORAGE - used by the import and export system, optional
- android.permission.WRITE_SETTINGS - used by the brightness controller, optional
- android.permission.VIBRATE - used to vibrate the device on actions, optional
- android.permission.INTERNET - used to check the latest version of the app and fetch the online changelog, optional
- android.permission.CAMERA - used to read barcodes and take pictures of the cards, optional
- android.permission.READ_MEDIA_IMAGES - used to select images for cards, optional
- android.permission.READ_MEDIA_VISUAL_USER_SELECTED - used to select images for cards, optional
- android.permission.USE_BIOMETRIC - for fingerprint verification if a card password is used, optional
- Edin DivoviΔ
- Wim Van Laer
- All the bug reporters that make the app even better.
Contact me for more info :). If your phone does not have issues with the app, you can add your device into the Tests file.
git clonethe repository,cd cardabase-appinto it,flutter pub getto download the dependencies,flutter build apkin Terminal (you can add--split-per-abiif you want to get multiple versions).
Note
Signing of the app is ON. You need a singature key and a key.properties in the /cardabase-app/android folder or else the build will fail. You can change THIS LINE to debug to sign it with a debug key.
Used versions:
- Flutter: 3.47.2 (or newer, used Flutter version is always added as a submodule, so you can use that one)
- Java: JDK-21
- Gradle: 8.14.2
Note: Java and Gradle versions must be compatible with each other. See this Compatibility Matrix.
You may need to:
- Specify JAVA_HOME in gradle.properties =
android/gradle.properties, add a lineorg.gradle.java.home="C:\\path\\to\\the\\jdk", where you have to specify your path, (<- in case of multiple/no versions or JAVA_HOME environment variable not specified) - Change Gradle version in gradle-wrapper.properties =
android\gradle\wrapper\gradle-wrapper.properties, last line "distributionUrl" (change the "X.X" or "X.X.X" number). (<- in case of different Gradle installation)