⚠️ Hobby tool without any guarantees. Use at your own risk.
Linky is a simple mobile-first PWA for managing contacts, messaging via Nostr, and sending Lightning payments using Cashu tokens. It is local-first: your data is stored locally and the app works offline.
- nostr - communication
- evolu - data storage
- cashu, mints - lightning integration
- npub.cash - lightning address management
- credo - promises - for details see Credo.md
-
You can either use existing
nsecorCreate account- Linky generates a nostr identitynsec/npubkey pair -
nsecis used for:- derivation of
seed- 12 words (BIP39) - selection of default name and avatar
- profile management - photo, name, lightning address
- sending encrypted and private messages - gift-wrapped (NIP17)
- registering lightning address on npub.cash
- managing main cashu mint on npub.cash
- collecting cashu tokens from npub.cash
- issuing own credo tokens
- derivation of
-
seedis used for:- authentication against evolu servers
- cashu token requests and token restoration
-
Evolu is used for local-first data storage and synchronization between devices.
- Contacts (npub, name, lightning address, group)
- Cashu tokens (token, status)
- Credo tokens (emitted, received)
- Main mint
- Contacts
- Scan, add, edit contacts
- Share your profile (
npub) including name, photo, and lightning address
- Messages
- Encrypted private chat via Nostr (NIP-17)
- Cashu and Credo tokens are rendered as pills in chat
- Wallet
- Paste and store Cashu tokens
- Balance shows only Cashu; Credo promises are listed separately
- Payments
- Pay to contact
- Lightning if selected or if Cashu/Credo message payment isn’t available
- Cashu/Credo message payment: consume Credo owed to you first, then Cashu, then (optionally) issue a Credo promise for the remainder
- Credo promises are capped (100,000 sat) and expire in ~1 month
- Scan Lightning invoices
- Top-up via Lightning invoice generated by the main Cashu mint
- Pay to contact
Requirements: Node.js + npm.
npm install
npm run devProduction build:
npm run buildPreview production build:
npm run preview