fix(machine): mobile UI polish and shadcn-vue ScrollArea

- Use h-dvh instead of h-screen for mobile browser viewport
- Add ScrollArea component (shadcn-vue) to replace native scrollbars
- Move Hide Debug into debug bar row, show Show Debug only when off
- Responsive cash-out denomination grid (single col on mobile)
- Add safe-area padding for mobile gesture bar
- Add business model documentation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Patrick Mulligan 2026-02-20 14:44:39 -05:00
commit 3634509ed4
8 changed files with 750 additions and 525 deletions

121
docs/business-model.md Normal file
View file

@ -0,0 +1,121 @@
# Business Model
How we place ATMs at locations and make them sustainable for everyone involved.
## Principles
- **No KYC** — more users, less friction, preserves privacy
- **Good energy locations** — we seek places with community trust and genuine intent
- **Bitcoin-native infrastructure** — Lightning, Nostr, Cashu — no legacy payment rails
- **Operator sovereignty** — locations can choose how much they want to manage themselves
## Deployment Models
### Managed (we run it)
We own the machine and handle all operations. The location provides power, internet, and floor space.
| Aspect | Details |
| ------------------- | ----------------------------------------- |
| Machine ownership | Us |
| Liquidity | Our Lightning channels + cash servicing |
| Software updates | Us (remote via Nostr) |
| Cash management | Us (periodic servicing visits) |
| Fee configuration | Us |
| Revenue to location | Fixed monthly hosting fee OR % of tx fees |
Best for locations that want passive income with zero involvement.
### Self-Sovereign (they run it)
The location buys (or finances) the machine and runs their own stack.
| Aspect | Details |
| ----------------- | ---------------------------------------- |
| Machine ownership | Them |
| Liquidity | Their own Lightning node + Lightning.Pub |
| Software updates | Them (we provide releases) |
| Cash management | Them |
| Fee configuration | Them |
| Revenue | 100% theirs |
Best for bitcoiners who want to run infrastructure and keep full control. We provide the software, hardware, and support.
### Machine Financing
For the self-sovereign model, we can offer financing:
- We purchase the machine upfront
- Location pays it off over time (from ATM revenue)
- Once paid off, they own it outright
- We provide support during the financing period
## Revenue Models
### Fixed Hosting Fee
- We pay the location a flat monthly fee for hosting
- Simpler accounting, predictable income for location
- We take all transaction fee revenue
- Works well for locations that just want passive income
### Profit Sharing
- Location receives a % of transaction fees
- Aligns incentives — they benefit from higher volume
- More attractive to engaged locations
- Requires transparent reporting (could be on-chain/Nostr-verifiable)
### Foot Traffic Value
Beyond direct revenue, the ATM provides:
- People visit specifically to use the ATM, then browse/buy at the location
- Bitcoin-friendly branding signals to the community
- Conversation starter — draws curious newcomers
- Community hub potential — meetup anchor point
## Location Criteria
We're selective about where we place machines. The goal is to find locations with **good energy** — places where the community is genuine and the environment discourages misuse.
### Ideal locations
- Coffee shops, cafes, local restaurants
- Co-working spaces, maker spaces
- Bitcoin meetup venues, hackerspaces
- Surf shops, yoga studios, wellness centers
- Local/independent businesses (not chains)
- Places where the owner is curious about or already into Bitcoin
### What we look for
- Owner alignment — understands or wants to understand Bitcoin
- Community trust — regulars know each other, self-policing
- Foot traffic — enough people to make the machine worthwhile
- Stable internet + power
- Visible but not exposed — inside the business, not on the street
### What we avoid
- High-crime areas
- Anonymous/transient locations (gas stations on highways, etc.)
- Businesses with no community connection
- Anywhere the owner is purely financially motivated with no alignment
## Technical Requirements
For the managed model to work at scale, we need:
- **Remote monitoring** — machine status, cash levels, error alerts over [[clink-protocol|CLINK]]/Nostr
- **Operator dashboard** — manage cassettes, view transactions, update config remotely
- **Multi-machine support** — one Lightning.Pub instance serving multiple ATMs
- **Fee configuration** — per-machine fee % set by operator
- **Availability broadcast** — public Nostr events indicating cash-in/cash-out availability (see [[ndebit-cash-in-flow|cash-in flow]])
## Related
- [[device-configuration]] — hardware setup for different machine models
- [[machine-installation]] — NixOS installation on ATM hardware
- [[clink-protocol]] — CLINK protocol for ATM-wallet communication
- [[ndebit-cash-in-flow]] — cash-in payment flow