Daily spending wallet
The daily spending wallet is an app designed to quickly and easily send small amounts of bitcoin. It focuses on the following:
Bitcoin only
This wallet aims to provide the best experience possible for using a single currency: bitcoin.
Self-custodial
With this wallet, the user manages their own private key. As a result, the user has full custody over their bitcoin. No third party, not even the app developer, can access the user’s funds.
Mobile
This wallet’s design is mobile-first. Mobile apps are ideal for making regular bitcoin payments. As such, this is an app the user may come to rely on every day.
Lightning-first
This wallet runs its own lightning node. This means the user is directly connected to the lightning network. They can transact instantly and cheaply without having to set up any additional hardware or software.
Topics covered #
What is a reference design? #
A reference design is a complete design for a bitcoin product. It goes beyond just demonstrating individual user flows – rather, it shows you how all of the user flows fit together and serve a purpose in the user’s life. You can use this open-source reference design to help you build your own similar bitcoin product!
What we are building #
Imagine a product that tries to solve the problem of quickly and easily sending smaller amounts of bitcoin to friends and family or paying for small purchases. Ease and speed of use will be important as usage will likely be on mobile devices and on the go. Users are not expected to be well-versed in bitcoin technology or advanced private key management, making it reasonable to worry more about self-inflicted loss than theft.
Since it’s designed for ease, this wallet abstracts away channel management for the user. It can do this by integrating with a lightning service provider (LSP). This way, the user never has to consider their lightning channels.
Speed of use is important for this wallet. As such, this wallet maintains a single lightning balance. This means that all the user’s funds are quickly spendable over lightning. The wallet uses submarine swaps so the user can send and receive bitcoin on-chain when needed.
See it in action #
Below is a prototype of the daily spending wallet, which outlines a few of the paths a user could take through this app. Click through to get a sense of the actual end-user experience.
You can find the prototype source files on Figma community, and a direct link to the design file here. There are also some code resources available, such as UI libraries and example wallet builds.
Alternate Options #
The chapters below will walk you through the different sections of this example product and help you understand the design considerations for why this product is built this way.
In the interest of being a fully realized product, this reference design makes assumptions about technologies, specifications, and the kind of person we’re building this for. As you build your own bitcoin product, you may decide that you need to build things differently.
We try to highlight other design approaches throughout and discuss their pros and cons. Look out for “alternate options” as you read. Think of these as building blocks you can swap in and out of this reference design as you plan out your own bitcoin product.
Chapters #
First use #
The daily spending wallet has a flexible first-use experience that guides users towards best practices as they install the app, create the wallet and deposit their first funds.
Backup & recovery #
As a self-custodial wallet, this app places control of the private key in the hands of the user. To make this easier, it provides an easy automatic cloud backup option. Users may opt to perform a manual backup instead or in addition. This app has recovery flows that guide the user in restoring access to their wallet.
Requesting #
This wallet lets the user quickly request bitcoin directly from the app’s home screen. From there, the user can edit associated metadata and share the payment request in a variety of ways.
Sending #
Similar to requesting bitcoin, sending bitcoin is one of the most commonly used features of this app. This wallet supports reading many different payment request types. It also keeps the user informed about the status of payments with human-readable messages.
Activity #
For an app the user may rely on daily, transaction history is more than just a list of amounts and fees. This wallet helps the user capture the meaning behind their transaction history with the activity screen. Smart organization, tags, and searching are just a few of the features that make this data useful to the user.
Contacts #
Things like invoices, node IDs, and bitcoin addresses can be unintuitive. This wallet simplifies the way users work with invoices, addresses, and payments via a contacts list. The user’s contacts are also integrated with the wallet activity.
Security #
Good security is critical for a bitcoin wallet. Whether it’s simply helping to keep the user’s transaction history out of sight or protecting the bitcoin from being stolen, this wallet takes steps to help the user stay secure.
Privacy #
Privacy in bitcoin is a complicated topic. While much of this can be considered an engineering challenge, this wallet’s user interface implements several features to help protect the user’s privacy.
Settings #
An overview of how users are likely to fund their wallets. While the daily spending wallet comes pre-configured with some sensible defaults, it’s impossible to predict every user’s needs. This app has a settings section that gives the user precise control over their experience.
Ready to begin? Let’s look at the first use of the daily spending wallet.