# Ario Web App A modular Vue 3 + TypeScript application with Nostr protocol integration and Lightning Network wallet functionality. ## Features - **Modular Architecture**: Plugin-based system with dependency injection - **Nostr Integration**: Decentralized social networking and messaging - **Lightning Wallet**: Real-time balance updates with LNbits WebSocket integration - **Event Ticketing**: Lightning-powered event tickets and marketplace - **PWA Support**: Progressive Web App with offline capabilities - **Desktop App**: Electron-based desktop application ## Real-Time Wallet Features The application provides seamless Lightning Network wallet integration: - **Lightning Invoice Creation**: Create BOLT11 invoices for receiving payments with QR codes - **Smart Payment Scanning**: QR code scanner for Lightning invoices, LNURL, and Lightning addresses - **Universal Payment Support**: Send to Lightning invoices, Lightning addresses (user@domain.com), and LNURL - **Smart Amount Fields**: Amount input only appears when needed (LNURL, Lightning addresses, or zero-amount invoices) - **Instant Balance Updates**: WebSocket connection provides real-time balance updates when payments are sent or received - **Live Notifications**: Toast notifications for incoming payments - **Connection Management**: Automatic reconnection with exponential backoff - **Battery Optimization**: Pauses WebSocket when app is not visible to save battery - **Multi-Wallet Support**: Manages multiple Lightning wallets with the first wallet as default ### WebSocket Configuration Configure WebSocket behavior in `src/app.config.ts`: ```typescript modules: { wallet: { enabled: true, config: { websocket: { enabled: true, // Enable/disable real-time updates reconnectDelay: 1000, // Initial reconnection delay (ms) maxReconnectAttempts: 5 // Maximum reconnection attempts } } } } ``` ## Development ```bash # Install dependencies npm install # Start development server with hot reload npm run dev # Build for production npm run build # Run Electron desktop app npm run electron:dev ``` ## Environment Setup Required environment variables: ```bash # LNbits server URL for Lightning wallet functionality VITE_LNBITS_BASE_URL=http://localhost:5000 # Nostr relay configuration (JSON array) VITE_NOSTR_RELAYS='["wss://relay1.example.com","wss://relay2.example.com"]' ``` ## Architecture The application follows a modular architecture with the following core modules: - **Base Module**: Authentication, Nostr client, PWA functionality - **Wallet Module**: Lightning payments, WebSocket balance updates, transaction management - **Events Module**: Event ticketing with Lightning payment integration - **Market Module**: Nostr marketplace functionality - **Chat Module**: Encrypted messaging via Nostr For detailed development guidelines, see [CLAUDE.md](./CLAUDE.md).