No description
- Vue 53.5%
- TypeScript 44%
- CSS 1.4%
- HTML 0.8%
- JavaScript 0.3%
Add a compact inline amber warning (icon + text) next to the "Select the account…" instruction on both the expense and income account-selection steps, so users know to fall back to the "Other" account when unsure. Splits the income i18n into selectAccount + a new otherAccountHint key (en/fr/es + types). |
||
|---|---|---|
| .vscode | ||
| branding | ||
| docs | ||
| electron | ||
| public | ||
| scripts | ||
| src | ||
| .cursorrules | ||
| .env.example | ||
| .gitignore | ||
| .mcp.json | ||
| chat.html | ||
| CLAUDE.md | ||
| components.json | ||
| events.html | ||
| flake.lock | ||
| flake.nix | ||
| forge.config.js | ||
| forum.html | ||
| index.html | ||
| libra.html | ||
| market.html | ||
| nginx.conf.example | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pwa-assets.config.ts | ||
| README.md | ||
| restaurant.html | ||
| tailwind.config.js | ||
| tasks.html | ||
| test-formatting.html | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite-branding.ts | ||
| vite.chat.config.ts | ||
| vite.config.ts | ||
| vite.events.config.ts | ||
| vite.forum.config.ts | ||
| vite.libra.config.ts | ||
| vite.market.config.ts | ||
| vite.restaurant.config.ts | ||
| vite.tasks.config.ts | ||
| vite.wallet.config.ts | ||
| vitest.config.ts | ||
| wallet.html | ||
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:
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.