# 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).
