diff --git a/README.md b/README.md index b6ad3cc..2124063 100644 --- a/README.md +++ b/README.md @@ -1,179 +1,138 @@ -# xmrpay.link — Serverless XMR Invoice Builder +# xmrpay.link — Monero Invoice Generator -> Privat. Selbst gehostet. Keine Accounts. Kein Backend. Kein Bullshit. +> Private. Self-hosted. No accounts. No backend. No bullshit. + +**[Live Demo: xmrpay.link](https://xmrpay.link)** --- -## Idee +## What is this? -**xmrpay.link** ist eine rein clientseitige Web-App, die es jedem ermöglicht, -in unter 30 Sekunden eine professionelle Monero-Zahlungsanforderung zu erstellen — -ohne eigenen Node, ohne Registration, ohne KYC, ohne Drittanbieter. +**xmrpay.link** is a client-side web app that lets anyone create a professional Monero payment request in under 30 seconds — no node, no registration, no KYC, no third parties. -Du gibst deine Adresse ein, den Betrag, eine optionale Beschreibung — -und bekommst einen QR-Code, einen kopierbaren `monero:`-Link und eine -optionale PDF-Rechnung. Fertig. +Enter your address, the amount, an optional description — and get a QR code, a shareable short link, and a PDF invoice. Done. --- -## Das Problem (Warum es das noch nicht gibt) +## Why? -| Lösung | Problem | +| Solution | Problem | |---|---| -| **BTCPay Server** | Eigener Server nötig, komplexes Setup | -| **NOWPayments, Globee** | Custodial, KYC, Fees, Drittanbieter-Abhängigkeit | -| **Cake Wallet Invoice** | Mobil-only, kein Teilen ohne App | -| **MoneroPay** | Backend-Daemon nötig, nur für Entwickler | -| **Wallet-QR direkt** | Kein Betrag, keine Beschreibung, keine Bestätigung | +| **BTCPay Server** | Requires own server, complex setup | +| **NOWPayments, Globee** | Custodial, KYC, fees, third-party dependency | +| **Cake Wallet Invoice** | Mobile-only, no sharing without app | +| **MoneroPay** | Backend daemon required, developer-only | +| **Wallet QR** | No amount, no description, no confirmation | -**Die Lücke:** Es gibt kein einfaches, datenschutzkonformes Tool für Freelancer, -kleine Händler und Creator, das ohne Setup funktioniert und trotzdem -Zahlungsbestätigung ermöglicht. +**The gap:** There's no simple, privacy-respecting tool for freelancers, small merchants, and creators that works without setup and still allows payment confirmation. --- -## Technologie-Stack +## Features + +### Invoice Generation +- XMR address input with validation (standard, subaddress, integrated) +- Amount in XMR or fiat (EUR/CHF/USD conversion via CoinGecko) +- Description and payment deadline (7/14/30 days or custom) +- QR code with `monero:` URI +- Shareable short URLs (`/s/abc123`) +- PDF invoice download (with QR, amount, fiat equivalent, deadline) +- i18n (English, German) with automatic browser detection + +### Payment Verification (TX Proof) +- Sender provides TX Hash + TX Key from their wallet +- Cryptographic verification in the browser (no private keys needed) +- Payment status stored permanently with the invoice +- Invoice link shows "Paid" badge after verification +- Standard and subaddress support + +### Performance & Privacy +- 100% Lighthouse score (Performance, Accessibility, Best Practices, SEO) +- Offline-capable via Service Worker +- Self-hosted fonts (no Google Fonts dependency) +- Zero external tracking, no cookies +- Dark mode, responsive design + +--- + +## Tech Stack ``` -Frontend: HTML + Vanilla JS (oder leichtes Vue 3) -Crypto: monero-javascript (WASM, läuft im Browser) -Node: Frei wählbarer öffentlicher Remote Node (z.B. xmr.sh, node.community) -QR: QRCode.js (clientseitig) -PDF: jsPDF (clientseitig) -Hosting: Statische Site — GitHub Pages, Netlify, Vercel, Self-hosted -Backend: KEINES -Daten: LocalStorage (optional, nur lokal, nie übertragen) +Frontend: HTML + Vanilla JS (no frameworks, no build step) +Crypto: @noble/curves Ed25519 + Keccak-256 (30KB bundle) +QR: QRCode.js (client-side) +PDF: jsPDF (client-side, lazy-loaded) +Hosting: Static site + minimal PHP for short URLs and RPC proxy +Backend: Minimal PHP (URL shortener, rates proxy, proof storage) +Data: JSON files (no database), LocalStorage (client-side) ``` -**Kein PHP-Backend. Kein Node.js-Server. Kein Datenbank-Setup.** -Die App ist eine einzige HTML-Datei, die von überall gehostet werden kann. - --- -## Feature-Roadmap - -### v1 — Der Kern (Static QR Generator) ✅ - -- [x] XMR-Adresse eingeben (Validierung: Standard, Subaddress, Integrated) -- [x] Betrag in XMR eingeben (optional: EUR/CHF/USD-Umrechnung via CoinGecko API) -- [x] Beschreibung / Verwendungszweck -- [x] Optionaler Countdown-Timer (Zahlungsfrist) -- [x] `monero:`-URI generieren -- [x] QR-Code anzeigen und als PNG downloaden -- [x] Link kopieren (für Messenger, E-Mail etc.) -- [x] Teilbare Kurz-URLs (`/s/abc123`) — selbst gehostetes URL-Shortening -- [x] Mehrsprachigkeit (DE, EN) mit automatischer Browsererkennung -- [x] Responsive Design, Dark Mode -- [x] Offline-fähig via Service Worker -- [x] CoinGecko-Fallback mit Auto-Retry - -### v2 — TX Proof Zahlungsbestätigung ✅ - -- [x] Sender gibt TX Hash + TX Key ein (aus Wallet kopiert) -- [x] Kryptografische Verifizierung im Browser (30KB noble-curves Bundle) -- [x] Zahlungsstatus wird dauerhaft mit Rechnung gespeichert -- [x] Rechnungs-Link zeigt "Bezahlt" Badge nach Verifizierung -- [x] Standard- und Subaddress-Unterstützung -- [x] Kein Private View Key nötig — kein Privacy-Risiko - -### v3 — Professionelle Features - -- [ ] PDF-Rechnung generieren (Logo, Betrag in Fiat, XMR-Betrag, QR, Fälligkeitsdatum) -- [ ] Einbettbarer `