Privacy-focused NFC tap-to-pay wallet for Android.
Your transaction data stays on your phone. Never shared or sold or tracked.
Learn more at walt.is
Walt is a tap-to-pay Android wallet that prioritizes user privacy and data control. Unlike traditional mobile wallet apps, Walt encrypts and stores all transaction data locally on your device. All transaction data stays between you and the merchant you're buying from. The app provides tap-to-pay functionality without surveillance, data monetization, or user tracking.
- Privacy First: Transaction data never leaves your device
- Local Encryption: All sensitive data encrypted using Android Keystore
- Transparent Pricing: $3/month subscription (no hidden fees, no data sales)
- Open Development: Architecture and design decisions documented publicly
Walt uses Clean Architecture with a hybrid approach:
- MVVM for simple features (cards, settings, onboarding)
- MVI with UDF for critical state machines (provisioning, payment)
android/
├── app/ # Application entry point
├── feature/ # Feature modules
│ ├── provisioning/ # Card digitization (MVI)
│ ├── payment/ # Tap-to-pay (MVI)
│ ├── cards/ # Card management (MVVM)
│ ├── settings/ # Settings (MVVM)
│ └── onboarding/ # Registration (MVVM)
├── core/
│ ├── domain/ # Business logic
│ ├── data-mtp/ # Payment SDK integration
│ ├── data-nfc/ # NFC/HCE layer
│ ├── security/ # Security & integrity
│ ├── telemetry/ # Local-only logging
│ ├── ui/ # Shared UI components
│ └── common/ # Utilities
├── testing/
│ ├── fakes/ # Test doubles
│ └── contract/ # Repository contracts
└── build-logic/ # Build configuration
Separation of Concerns
data-mtphandles payment provider integrationdata-nfchandles NFC protocol (independent of provider)securitycentralizes security logic for audit compliance
MVI for State Machines
- Card provisioning has complex async flows
- Tap-to-pay requires predictable state transitions
- Single source of truth aids security audits
MVVM for Simple Screens
- Less boilerplate for CRUD operations
- Natural fit with Jetpack Compose
For detailed architecture decisions, see Architecture Documentation.
- Language: Kotlin
- UI: Jetpack Compose + Material Design 3
- Payment Infrastructure: MeaWallet Mobile Token Platform (MTP SDK)
- Architecture: Clean Architecture (domain/data/presentation)
- Dependency Injection: Hilt
- Async: Kotlin Coroutines + Flow
- Security: Android Keystore, Play Integrity API
Walt leverages MeaWallet's MTP SDK for:
- Card tokenization (I-TSP)
- NFC/HCE contactless payments
- Token lifecycle management
- Card network integration (Visa/Mastercard)
This allows Walt to focus on privacy, UX, and local data protection while using battle-tested payment infrastructure.
- Android 8.0+ (API 26+)
- NFC hardware with HCE support
- Device lock screen enabled (PIN/password/pattern/biometric)
- Google Play Services (for Firebase Cloud Messaging)
- Android Studio (latest stable)
- JDK 17+
- MeaWallet SDK access (contact MeaWallet for partnership)
./gradlew build./gradlew test./gradlew installDebugWalt uses automated code quality tools to maintain security and consistency:
Run all quality checks:
./gradlew detekt ktlintCheckIndividual tools:
# Static analysis (security, bugs, code smells)
./gradlew detekt
# Code formatting and style
./gradlew ktlintCheckAuto-fix formatting issues (use with caution):
./gradlew ktlintFormatQuality checks run automatically via GitHub Actions on all pull requests and pushes to main. The workflow will fail PRs with violations, ensuring:
- Consistent code style across the codebase
- Early detection of potential security issues
- Prevention of common bugs and anti-patterns
CI Workflow: .github/workflows/quality.yml
Configuration files:
detekt.yml- Static analysis rules.editorconfig- Formatting rules
- Transaction data encrypted with Android Keystore
- No server-side transaction storage
- No analytics sent to third parties
- No user tracking
- Play Integrity API for device verification
- Root/tamper detection
- Hardware-backed key storage (TEE/StrongBox when available)
- Encrypted local database (SQLCipher)
Annual security audits funded by subscriptions ensure Walt maintains high security standards.
Walt is being developed with community transparency in mind. Contribution guidelines will be published as the project matures.