Skip to content
← All demos
B2B utility

TonerPal

Toner & ink inventory

iPhone · iPadIn reviewReact NativeExpoSupabase
Guided demo · sample data
9:41▮▮▮􀙇
9:41▮▮▮􀙇
Try this
  • Open the red “needs reordering” card, then reorder a cartridge
  • Tap a printer to see its cartridges and par levels
  • Scan a cartridge and mark one installed

The guided demo runs on sample data in your browser — nothing is connected to a production system and no real transaction is processed. Where a real URL can be framed, the toolbar above switches to it and says so.

What this demo demonstrates

Capabilities you could commission.

identity
Face ID / biometric app lockShipped

An optional app lock built on the device biometric API — Face ID, Touch ID or Android biometrics — with a passcode fallback and a settings toggle.

See it on its own →
🔑Secure credential storageShipped

Sessions and tokens held in the iOS keychain / Android encrypted storage, never in plain application storage.

See it on its own →
monetization
RevenueCat subscriptions & entitlementsShipped

RevenueCat sits on top of StoreKit 2 and Google Play Billing: the store still processes every purchase, RevenueCat resolves it into an entitlement the app can check on any platform.

See it on its own →
$In-app purchases (StoreKit 2 / Play Billing)Shipped

Native StoreKit 2 on iOS and Google Play Billing on Android — products, offerings, purchase and restore flows.

See it on its own →
🔒Premium feature gatingShipped

Entitlement checks wrap the premium surfaces themselves, so a free account sees the locked state and an entitled account sees the feature — the same build, two experiences.

See it on its own →
communication
Push & local notificationsShipped

Scheduled local notifications and remote push, with permission handling and a deep link that opens the exact screen the notification is about.

See it on its own →
Deep links & universal linksShipped

Associated-domain universal links and Android app links that route a URL to the right in-app destination.

See it on its own →
media
Camera captureShipped

In-app camera with permission handling, capture, retake and immediate use of the resulting image.

See it on its own →
🖼Photo library & pickerShipped

The system photo picker, which reads a chosen image without requesting access to the whole library.

See it on its own →
productivity
Reminders & recurring schedulesShipped

Recurring local schedules that survive app restarts and fire without a server round trip.

See it on its own →
business
Inventory & asset trackingShipped

Item records with levels, consumption history and reorder signals driven by real usage.

See it on its own →
data
Search & filteringShipped

Instant search with multi-facet filters, sorting and a genuine empty state when nothing matches.

See it on its own →
Offline modeShipped

Local-first records that keep working with no signal and reconcile when the connection returns.

See it on its own →
device
QR & barcode scanningShipped

Camera-based scanning that reads a code and continues straight into the workflow it identifies.

See it on its own →
Haptics & tactile feedbackShipped

Impact and notification haptics on the moments that matter — confirmation, error, and success.

See it on its own →
Share sheet & export to other appsShipped

The system share sheet, so output leaves the app into Messages, Mail, Files or any installed app.

See it on its own →
Dark mode & dynamic layoutsShipped

System-driven light and dark themes, plus layouts that adapt from phone to tablet to desktop.

See it on its own →
The problem

What this product exists to fix.

Problem

Nobody owns printer supplies until a printer stops. Then it is an emergency, and emergencies ship overnight at three times the price.

Solution

Scan a cartridge, see what is on hand against a par level, reorder before it runs out — with a local alert when something drops below par.

How it was built

The implementation, at a level we can share.

MobileReact Native · Expo · iPhone and iPad
DeviceCamera scanning · keychain storage · biometric lock
BackendSupabase · PostgreSQL · row-level security
MonetizationRevenueCat entitlements
  • Barcode scanning that resolves to the record and continues the workflow
  • Par levels per item, so “low” means low for that printer rather than a global guess
  • Optional biometric app lock with sessions stored in the device keychain
  • Local notifications, so reminders do not depend on a server being reachable

A capability-level overview. Endpoints, credentials, internal architecture and client-specific code stay private.

Where else this fits

The same architecture, other industries.

Facilities & office managementManaged print providersField service van stockAny consumable inventory with reorder points

Don’t copy the app — copy the capability. Every workflow above can be rebuilt around your business, your data and your users.

The real app

Captured from the shipped build.

TonerPal screen
Build this for your company

You don’t have to build TonerPal.

We can adapt individual features, workflows, interfaces or the whole system to your business.

TonerPal — interactive demo · ShahInvents