Compose Multiplatform app for managing loyalty and membership cards.
- Add Cards: Scan barcodes with your camera or import from files.
- Organization: Group cards into custom collections for easy access.
- Card Display: Tap to reveal barcode with Full Brightness Mode for quick scanning.
- Customization: Personalize cards with color themes and icons.
- Offline Mode: All cards stored locally — no network required.
- Kotlin Multiplatform
- Compose Multiplatform
- Coroutines
- Koin - Dependency injection
- Room - Local database persistence layer
- Datastore - Data storage for small key-value data
- Navigation Compose - Navigation for Compose apps
- Kotlinx Serialization
- Kermit - Multiplatform logger + crashlytics integration
- Accompanist Permissions - Compose permissions for android
- Kolor Picker - Compose color picker component
- Calf File Picker — File picker for Compose Multiplatform
- Lucide Icons for Compose
- CameraX Compose - Camera library for compose android
- Qrose - QR and 1D barcode generation library
- Firebase Crashlytics
Update version and build number in app_version.json
Crashlytics are enabled for both platforms.
On Android, place google-services.json in composeApp/src directory.
On iOS, place GoogleService-Info.plist file in iosApp/cardahoy/.
Create .env file in root and add content:
KEYSTORE_PASSWORD=something
KEYSTORE_ALIAS=something
KEYSTORE_KEY_PASSWORD=something
DEVELOPMENT_TEAM=something
CODE_SIGNING_IDENTITY=something
PROVISIONING_PROFILE_SPECIFIER=somethingAndroid
fastlane android build_releaseiOS
fastlane ios build_releaseCopyright 2025 Krzysztof Borowy
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

