Client Punch Pass
Create a permanent client QR pass, share its human-readable image by the client’s preferred email or text channel, and replace it when needed.
Session Punch · In Development
A digitally validated prepaid-session ledger for independent service providers—not a loyalty program, payment system, or scheduling suite.
For users
Designed for independent providers who sell packages of sessions and need a simple shared proof of what remains.
Create a permanent client QR pass, share its human-readable image by the client’s preferred email or text channel, and replace it when needed.
Scan through Google Code Scanner, review the client and balance, then confirm the punch. Manual punches require a reason.
Every change shows before, change, and after balances. Receipts hand off to the provider’s normal messaging app.
Void a punch through an immutable reversal rather than deleting history. Negative balances remain representable rather than hidden.
Reusable package shortcuts, low-balance highlighting, reminders, check-ins, global activity, and client activity stay in one local workspace.
No payments, pricing, expiry, scheduling, service catalog, client account, client portal, cloud sync, ads, or analytics.
Current status: Android prototype v0.1.6, in development. Contact support@wildonionlabs.com for testing or collaboration.
For developers
Kotlin and Jetpack Compose with Room/SQLite persistence. A compact Clients · Scan · Activity navigation model keeps the critical path permanently available.
Balances are aggregate and fungible per client. Credits, punches, archive events, QR replacements, and reversals produce permanent client-level transactions.
A permanent random client token backs the Punch Pass. Replacing a pass invalidates the previous token and records the event; versioned filenames avoid share collisions.
Permission-free Google Code Scanner handles acquisition, while ZXing generates pass imagery. Business confirmation remains explicit after scanning.
Email and SMS use Android intent handoff. The app records that a reminder/check-in was initiated but does not falsely claim the provider pressed Send in another app.
Corrections append reversals, clients archive instead of disappearing, pass replacement invalidates stale credentials, and local Room migrations preserve existing records.