No description
- Introduced a new QRScanner component to facilitate QR code scanning within the application. - Integrated QR code scanning capabilities into the SendDialog.vue, allowing users to scan QR codes for payment destinations. - Updated package.json and package-lock.json to include the qr-scanner library for QR code processing. - Enhanced user experience by providing visual feedback and error handling during the scanning process. These changes improve the payment workflow by enabling users to easily scan QR codes for transactions. Enhance QR code interaction in ReceiveDialog.vue - Updated the QR code display to include a clickable area that allows users to copy the invoice directly to the clipboard. - Added a descriptive message below the QR code to inform users about the copy functionality, improving usability and accessibility. These changes enhance the user experience by making it easier to interact with the QR code for invoice management. Fix QR scanner loading state condition and remove unused video element reference - Updated the loading state condition in qr-scanner.vue to check for camera permission correctly. - Removed the unused videoElement reference in useQRScanner.ts to clean up the code. These changes improve the functionality and clarity of the QR scanner component. |
||
|---|---|---|
| .vscode | ||
| docs | ||
| electron | ||
| public | ||
| src | ||
| .cursorrules | ||
| .env.example | ||
| .gitignore | ||
| CLAUDE.md | ||
| components.json | ||
| forge.config.js | ||
| index.html | ||
| nginx.conf.example | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tailwind.config.js | ||
| test-formatting.html | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
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:
- 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:
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
# 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:
# 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.