Add concrete implementation plan for Nostr-native ATM

Phased roadmap with code examples:

Phase 0: Foundation
- Monorepo structure (Turborepo + pnpm)
- devenv.nix for reproducible dev environment
- Lightning.Pub local setup
- Private strfry relay

Phase 1: Core Infrastructure
- @lamassu/nostr-client package
- Machine identity (nsec/npub generation)
- Relay connection with NIP-42
- @lamassu/clink package for CLINK offers

Phase 2: Machine Shell
- Tauri 2.x + Vue 3 application
- XState v5 state machine (full ATM logic)
- Nostr composable for Vue
- QR display, screen navigation

Phase 3: Hardware Abstraction Layer
- Rust HAL crate with napi-rs bindings
- BillValidator trait + NV200 implementation
- BillDispenser trait + Puloon implementation
- Mock drivers for development

Phase 4: Payment Flows
- Lightning.Pub client integration
- Cash-in: CLINK offers -> invoice -> payment
- Cash-out: Invoice -> payment -> dispense
- NIP-17 encrypted receipts
- Cashu offline mode

Phase 5: Operator Tools
- Vue 3 dashboard
- Real-time machine monitoring via Nostr
- Transaction history
- Remote command sending

Includes:
- Complete XState machine definition
- Rust HAL trait definitions
- TypeScript/Vue code examples
- Testing strategy
- Dev hardware recommendations (~$535-735)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Patrick Mulligan 2026-01-22 15:46:57 -05:00
commit b80f174b08

1617
docs/implementation-plan.md Normal file

File diff suppressed because it is too large Load diff