https://github.com/krizzu/cardahoy
Compose Multiplatform app to manage loyalty and membership cards
https://github.com/krizzu/cardahoy
android barcode-scanner compose compose-multiplatform ios kotlin kotlin-multiplatform kotlin-multiplatform-sample loyalty-cards mvvm offline
Last synced: 4 months ago
JSON representation
Compose Multiplatform app to manage loyalty and membership cards
- Host: GitHub
- URL: https://github.com/krizzu/cardahoy
- Owner: krizzu
- License: apache-2.0
- Created: 2025-02-01T18:20:29.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-10-22T07:59:22.000Z (7 months ago)
- Last Synced: 2025-12-22T22:21:28.614Z (5 months ago)
- Topics: android, barcode-scanner, compose, compose-multiplatform, ios, kotlin, kotlin-multiplatform, kotlin-multiplatform-sample, loyalty-cards, mvvm, offline
- Language: Kotlin
- Homepage: https://cardahoy.kborowy.com/
- Size: 2.64 MB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
💳 Cardahoy
Compose Multiplatform app for managing loyalty and membership cards.
## Features
- **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.
## Libraries
- [Kotlin Multiplatform](https://kotlinlang.org/docs/multiplatform.html)
- [Compose Multiplatform](https://github.com/JetBrains/compose-multiplatform)
- [Coroutines](https://github.com/Kotlin/kotlinx.coroutines)
- [Koin](https://insert-koin.io/) - Dependency injection
- [Room](https://developer.android.com/kotlin/multiplatform/room) - Local database persistence layer
- [Datastore](https://developer.android.com/kotlin/multiplatform/datastore) - Data storage for small key-value data
- [Navigation Compose](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-navigation-routing.html) -
Navigation for Compose apps
- [Kotlinx Serialization](https://github.com/Kotlin/kotlinx.serialization)
- [Kermit](https://github.com/touchlab/Kermit) - Multiplatform logger + crashlytics integration
- [Accompanist Permissions](https://google.github.io/accompanist/permissions/) - Compose permissions for android
- [Kolor Picker](https://github.com/kborowy/kolor-picker) - Compose color picker component
- [Calf File Picker](https://github.com/MohamedRejeb/Calf) — File picker for Compose Multiplatform
- [Lucide Icons for Compose](https://github.com/ComposablesTeam/icons-lucide)
- [CameraX Compose](https://developer.android.com/training/camerax) - Camera library for compose android
- [Qrose](https://github.com/alexzhirkevich/qrose) - QR and 1D barcode generation library
- [Firebase Crashlytics](https://firebase.google.com/docs/crashlytics)
## Development
#### Bumping version
Update version and build number in `app_version.json`
#### Firebase
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/`.
#### Env variables
Create `.env` file in root and add content:
```dotenv
KEYSTORE_PASSWORD=something
KEYSTORE_ALIAS=something
KEYSTORE_KEY_PASSWORD=something
DEVELOPMENT_TEAM=something
CODE_SIGNING_IDENTITY=something
PROVISIONING_PROFILE_SPECIFIER=something
```
#### Building artifacts
**Android**
```bash
fastlane android build_release
```
**iOS**
```bash
fastlane ios build_release
```
## License
```
Copyright 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.
```

