No description
- Added support for AND/OR filtering modes in the `useCategoryFilter` composable, allowing users to filter products based on all or any selected categories. - Introduced reactive state management for filter mode and updated the filtering logic to accommodate the new functionality. - Enhanced the MarketPage UI with a toggle for selecting filter modes, improving user experience and accessibility. - Updated ARIA attributes for better screen reader support in the filter mode selection. These changes significantly enhance the category filtering capabilities, providing users with more control over product visibility. Refactor CreateProductDialog and MarketPage for improved category handling - Updated CreateProductDialog to utilize `model-value` and `@update:model-value` for the CategoryInput component, enhancing reactivity in category selection. - Enhanced MarketPage filtering logic to support AND/OR modes, allowing for more flexible product filtering based on selected categories. - Improved category normalization and matching logic to ensure accurate filtering results. These changes streamline the category management and filtering processes, providing users with a more intuitive experience when creating and finding products. |
||
|---|---|---|
| .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:
- 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.