No description
  • Vue 53.5%
  • TypeScript 44%
  • CSS 1.4%
  • HTML 0.8%
  • JavaScript 0.3%
Find a file
Padreug c035fc2bfc feat(libra): flag the "Other" account hint on the account step
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).
2026-06-26 11:07:37 +02:00
.vscode initial post-installation commit 2025-01-30 13:26:56 +01:00
branding feat(branding): per-brand default theme + palette via brand.json 2026-06-15 22:12:13 +02:00
docs docs(nostr-patterns): point monotonic created_at at the shared helper 2026-06-18 12:03:58 +00:00
electron chore: Set up Electron configuration and update dependencies 2025-03-20 17:26:15 +01:00
public refactor(branding): switch to /icons/ paths and remove committed binaries 2026-06-09 23:37:55 +02:00
scripts fix(branding): wrap generator to clean up staged brand source 2026-06-09 22:58:07 +02:00
src feat(libra): flag the "Other" account hint on the account step 2026-06-26 11:07:37 +02:00
.cursorrules update cursor rules to follow semantic/theme aware color patterns 2025-08-14 15:19:13 +02:00
.env.example refactor(events): rename activities module to events + wire VITE_APP_NAME for per-deployment branding (#94) 2026-06-09 18:18:26 +00:00
.gitignore feat(branding): install @vite-pwa/assets-generator + config 2026-06-09 22:38:26 +02:00
.mcp.json chore(mcp): add shadcn-vue MCP server alongside playwright 2026-05-24 00:37:16 +02:00
chat.html refactor(branding): switch to /icons/ paths and remove committed binaries 2026-06-09 23:37:55 +02:00
CLAUDE.md docs(nix): document lib.mkWebapp in branding/README + CLAUDE.md 2026-06-10 10:46:17 +02:00
components.json update shadcn/tailwind config 2025-03-09 15:40:32 +01:00
events.html refactor(branding): switch to /icons/ paths and remove committed binaries 2026-06-09 23:37:55 +02:00
flake.lock feat(nix): add flake.nix exposing lib.mkWebapp 2026-06-10 10:21:40 +02:00
flake.nix fix(nix): regenerate pnpmDeps hash for the vitest lockfile change 2026-06-18 14:50:36 +02:00
forge.config.js chore: Set up Electron configuration and update dependencies 2025-03-20 17:26:15 +01:00
forum.html refactor(branding): switch to /icons/ paths and remove committed binaries 2026-06-09 23:37:55 +02:00
index.html refactor(branding): switch to /icons/ paths and remove committed binaries 2026-06-09 23:37:55 +02:00
libra.html refactor(branding): switch to /icons/ paths and remove committed binaries 2026-06-09 23:37:55 +02:00
market.html refactor(branding): switch to /icons/ paths and remove committed binaries 2026-06-09 23:37:55 +02:00
nginx.conf.example refactor(events): rename activities module to events + wire VITE_APP_NAME for per-deployment branding (#94) 2026-06-09 18:18:26 +00:00
package.json chore(test): add vitest runner + smoke test 2026-06-18 13:25:34 +02:00
pnpm-lock.yaml chore(test): add vitest runner + smoke test 2026-06-18 13:25:34 +02:00
pwa-assets.config.ts feat(branding): install @vite-pwa/assets-generator + config 2026-06-09 22:38:26 +02:00
README.md Enhance README and wallet module documentation with new payment features 2025-09-18 23:23:30 +02:00
restaurant.html refactor(branding): switch to /icons/ paths and remove committed binaries 2026-06-09 23:37:55 +02:00
tailwind.config.js refactor: Update color definitions in Tailwind configuration to use oklch color space 2025-08-03 11:20:57 +02:00
tasks.html refactor(branding): switch to /icons/ paths and remove committed binaries 2026-06-09 23:37:55 +02:00
test-formatting.html feat: Enhance RelayHub component with subscription count details (still not working) 2025-08-10 18:19:18 +02:00
tsconfig.app.json update shadcn/tailwind config 2025-03-09 15:40:32 +01:00
tsconfig.json initial post-installation commit 2025-01-30 13:26:56 +01:00
tsconfig.node.json initial post-installation commit 2025-01-30 13:26:56 +01:00
vite-branding.ts feat(layout): re-enable "Back to hub" with a sticky sheet footer 2026-06-20 00:26:52 +02:00
vite.chat.config.ts feat(layout): re-enable "Back to hub" with a sticky sheet footer 2026-06-20 00:26:52 +02:00
vite.config.ts feat(layout): re-enable "Back to hub" with a sticky sheet footer 2026-06-20 00:26:52 +02:00
vite.events.config.ts feat(layout): re-enable "Back to hub" with a sticky sheet footer 2026-06-20 00:26:52 +02:00
vite.forum.config.ts feat(layout): re-enable "Back to hub" with a sticky sheet footer 2026-06-20 00:26:52 +02:00
vite.libra.config.ts feat(layout): re-enable "Back to hub" with a sticky sheet footer 2026-06-20 00:26:52 +02:00
vite.market.config.ts feat(layout): re-enable "Back to hub" with a sticky sheet footer 2026-06-20 00:26:52 +02:00
vite.restaurant.config.ts feat(layout): re-enable "Back to hub" with a sticky sheet footer 2026-06-20 00:26:52 +02:00
vite.tasks.config.ts feat(layout): re-enable "Back to hub" with a sticky sheet footer 2026-06-20 00:26:52 +02:00
vite.wallet.config.ts feat(layout): re-enable "Back to hub" with a sticky sheet footer 2026-06-20 00:26:52 +02:00
vitest.config.ts chore(test): add vitest runner + smoke test 2026-06-18 13:25:34 +02:00
wallet.html refactor(branding): switch to /icons/ paths and remove committed binaries 2026-06-09 23:37:55 +02:00

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.