Lightning wallet in 1 click!
I vibe-coded a trivial wallet-creation app today:
Zap.land: Lightning wallet in 1 click
One click and you get NWC string that you can put into Alby Go to topup the wallet and send payments, or put into Damus/Amethyst to send zaps. You also get LN address that you can paste into your Nostr profile and receive zaps to this wallet.

The backend of this is a development instance of a new custodial lightning wallet deployed in a trusted execution environment. That means you get better security and privacy guarantees, along with great usability. It's open source, you will be able to launch an instance of it yourself and clients could discover your instance along with ours and let users choose. The source code is here:

GitHub
GitHub - nostrband/nwc-enclaved
Contribute to nostrband/nwc-enclaved development by creating an account on GitHub.
This is an invitation for public testing and for your feedback. The wallets created have the max balance limit of 1000 sats and will likely be turned off at some point when testing is over and dev instance needs to be shut down. This is not the real thing, it's a toy to get a taste of it!
The service is based on "phoenixd" wallet with fully automatic liquidity management, which means - fees. Phoenix charges 4 sats + 0.4% per payment - we charge extra 1 sat, phoenix charges 1% plus mining fees for liquidity - we add nothing here, we also charge 1 sat per day to avoid getting spammed. When I say "we" I mean "the code inside the enclave" - it will only use revenue to pay for itself inside the enclave, not to make a profit.
Anyways, send some feedback!
Replies (45)
Ah and btw you can add wallet creation to your app using this lib:

GitHub
GitHub - nostrband/nwc-enclaved-utils
Contribute to nostrband/nwc-enclaved-utils development by creating an account on GitHub.
It discovers a valid service instance and creates a wallet in a couple lines of code.
*not
The wallet service has it's own nostr profile here:
@nwc-enclaved wallet service
Did the one click, now seeing a constant stream of this error repeating:
Error fetching balance
Failed to connect to wss://relay.zap.land/
We will create spank-based on too, it's a different set of tradeoffs.
Could you reload and retry please? Works fine here
What are the tradeoffs?
Good 🤟😉
O negócio está ficando dooooooido 🙀🙀
brugeman
Lightning wallet in 1 click!
I vibe-coded a trivial wallet-creation app today:
Zap.land: Lightning wallet in 1 click
One click and you get NWC string that you can put into Alby Go to topup the wallet and send payments, or put into Damus/Amethyst to send zaps. You also get LN address that you can paste into your Nostr profile and receive zaps to this wallet.

The backend of this is a development instance of a new custodial lightning wallet deployed in a trusted execution environment. That means you get better security and privacy guarantees, along with great usability. It's open source, you will be able to launch an instance of it yourself and clients could discover your instance along with ours and let users choose. The source code is here:

GitHub
GitHub - nostrband/nwc-enclaved
Contribute to nostrband/nwc-enclaved development by creating an account on GitHub.
This is an invitation for public testing and for your feedback. The wallets created have the max balance limit of 1000 sats and will likely be turned off at some point when testing is over and dev instance needs to be shut down. This is not the real thing, it's a toy to get a taste of it!
The service is based on "phoenixd" wallet with fully automatic liquidity management, which means - fees. Phoenix charges 4 sats + 0.4% per payment - we charge extra 1 sat, phoenix charges 1% plus mining fees for liquidity - we add nothing here, we also charge 1 sat per day to avoid getting spammed. When I say "we" I mean "the code inside the enclave" - it will only use revenue to pay for itself inside the enclave, not to make a profit.
Anyways, send some feedback!
View quoted note →
Interesting that when I went back to the site it forgot about the wallet I created previously.
Also it is still an issue. I am using vanadium browser on GrapheneOS.
great job! :salute:
also, you can update your nwclay to latest version. ive added some small fixes.
Automatic wallet creation by apps for new users is one of the goals of the nwc-enclaved, and it supports zaps.
The tradeoffs with Spark are that it's a new tech and quite complex and not many people can understand it. And Spark operators have to be trusted, although I'd say they should run in enclaves too. And no fees for now but they will come and hopefully will be competitive. And 'unilateral exist' is 'coming soon' at the moment. And your wallet still has to be online 24/7 to receive payments if I understand it correctly. So - pick your poison. I think it's very promising, but wouldn't bet 100% on it right now.
Crazy,
@brugeman . You are always creating something new. Respect 🫡
Thanks, updated.
👀 Nice
brugeman
Lightning wallet in 1 click!
I vibe-coded a trivial wallet-creation app today:
Zap.land: Lightning wallet in 1 click
One click and you get NWC string that you can put into Alby Go to topup the wallet and send payments, or put into Damus/Amethyst to send zaps. You also get LN address that you can paste into your Nostr profile and receive zaps to this wallet.

The backend of this is a development instance of a new custodial lightning wallet deployed in a trusted execution environment. That means you get better security and privacy guarantees, along with great usability. It's open source, you will be able to launch an instance of it yourself and clients could discover your instance along with ours and let users choose. The source code is here:

GitHub
GitHub - nostrband/nwc-enclaved
Contribute to nostrband/nwc-enclaved development by creating an account on GitHub.
This is an invitation for public testing and for your feedback. The wallets created have the max balance limit of 1000 sats and will likely be turned off at some point when testing is over and dev instance needs to be shut down. This is not the real thing, it's a toy to get a taste of it!
The service is based on "phoenixd" wallet with fully automatic liquidity management, which means - fees. Phoenix charges 4 sats + 0.4% per payment - we charge extra 1 sat, phoenix charges 1% plus mining fees for liquidity - we add nothing here, we also charge 1 sat per day to avoid getting spammed. When I say "we" I mean "the code inside the enclave" - it will only use revenue to pay for itself inside the enclave, not to make a profit.
Anyways, send some feedback!
View quoted note →
I sent your answer to Kevin and he replied with this:

Awesome, thanks! Offline receive is a great capability.
Although I am looking at the diagram, the LN payment itself is offline, but looks like invoice generation still needs receiver to be online, which means something like zaps isn't possible offline.
Can you share your process at some point? LLMs, tools, MCPs, snippets that you have used?
You mean ones I used to vibe code this small app?
Kevin says they'll allow invoice creation with offline receiver too, that's promising.
yeah, I'm in general curious what vibe coding tools and setup people use, so we can all improve our vibe-stack.
This was basically my first shot, I just used cursor with claude 3.5 sonnet. What do you use?
Ahh, great that it knew to use the NWC spec then. I’m currently using the same setup but want to try roocode and some MCP servers next.
Well I told it to use my library by name, it did get some nwc stuff wrong and needed some pointers. Later I tried from scratch to give it a link to library github repo and it did well from the start.
Great work, bro. 🫡
I have some problems.
1. After refreshing the webpage, I can't find the wallet I just created. Is there any way to store my wallet? For example, the URL.
2. I pasted the NWC connection string using Freerse, and I can't automatically get the lightning address I just created.
Is this lightning node directly called by Phoenix's node?
Hi, this isn't really a wallet app, it's just here for you to generate NWC string and start using it elsewhere.
Zap.land gave you the ln address which you could put into your profile, is that what happened? NWC isn't really related to ln address, these are separate things
Great, bro. very neat micro wallet. Zap is smooth. This could be the default for all Nostr.
I want to manage balances and transfers in the wallet I just created. I can't view the wallet page after leaving the webpage.
NWC because when I connected Alby wallet and Coinos wallet before, Freerse automatically got their lightning address as the default lightning wallet address for my account. This is a small problem.
Ah ok I found it, added lud16 to NWC now - could you please try again checking if LN address will be taken from NWC?
I recommend managing the wallet using Alby Go or similar app for now, I don't have immediate plans to add transfers etc to zap.land
I just tested it and still can't get the lightning address from NWC.
Alby Go and Zap land are a perfect combination.

Does the NWC string that you're getting now include &lud16=<address> ?
Yes works great w/
@Alby !
Still no lightning address.
Alby Go is a very smart way. It can ensure the smoothness of the wallet and can freely connect to the web wallet. It can also avoid many policy issues through NWC.
Is zap.land running on Nostr's Relay at wss://relay.zap.land?
Sorry I don't see any other way to pass ln address with NWC - lud16 is included now, maybe that's something on your side? Are you setting the NWC string into an existing profile that already had ln address? Maybe Freerse uses address from NWC only if profile didn't have one already?
Yes it's using relay.zap.land
That’s ok. I can add the lightning address manually. Thanks for your hard work. 🫡
I want to know how much AI can help you with coding workload. Is it 20%? 👀👀
I'm only playing with it atm, no good number yet.
I had a great time. I saw a lot of Cursor examples and it felt like I was progressing very quickly.
Well while we were talking RooCode looked through one third-party golang codebase, figured out how to do what I need, and wrote me a ts function to solve my problem. I tried doing that by hand before and just gave up. Sometimes it's super helpful.
That's great. AI is evolving so fast.
Hi bro, today zap.land's lightning address cannot accept transfers. I can only transfer money by creating an invoice.
It has balance limit of 1000 sats, it's in testing-only mode right now.
OK, thanks