layout | title | description | nav_order | has_children | permalink | main_classes | first_reference_design | image |
---|---|---|---|---|---|---|---|---|
guide |
Daily spending wallet |
An in depth reference design for a daily spending mobile bitcoin wallet. |
4 |
true |
/guide/daily-spending-wallet/ |
daily-spending-wallet-landing -no-top-padding |
true |
{% include picture.html image = "/assets/images/guide/daily-spending-wallet/daily-spending-header.jpg" retina = "/assets/images/guide/daily-spending-wallet/[email protected]" mobile = "/assets/images/guide/daily-spending-wallet/daily-spending-header-mobile.jpg" mobileRetina = "/assets/images/guide/daily-spending-wallet/[email protected]" alt-text = "Various screens from a mobile bitcoin wallet" caption = "" width = 1600 height = 600 layout = "full-width" %}
The daily spending wallet is an app designed to quickly and easily send small amounts of bitcoin. It focuses on the following:
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.
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.
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!
Imagine a product that tries to solve the problem of quickly and easily [sending smaller amounts of bitcoin]({{'/guide/designing-products/personal-finance/#day-to-day-spending' | relative_url}}) 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]({{'/guide/how-it-works/private-key-management/introduction/' | relative_url}}), 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)]({{'/guide/how-it-works/lightning-services/' | relative_url}}). This way, the user never has to consider their [lightning channels.]({{'/guide/how-it-works/liquidity/' |relative_url}})
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.
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.
{% include prototype.html link = "https://www.figma.com/proto/lf2Xyw2I2OXPsHiFQVQdiG/Daily-spending-wallet-prototype?page-id=4167%3A92515&node-id=4167%3A92516&viewport=253%2C104%2C0.08&scaling=min-zoom&starting-point-node-id=4167%3A92516&show-proto-sidebar=1" image = "/assets/images/guide/daily-spending-wallet/daily-spending-prototype.jpg" retina = "/assets/images/guide/daily-spending-wallet/[email protected]" mobile = "/assets/images/guide/daily-spending-wallet/daily-spending-prototype-mobile.jpg" mobileRetina = "/assets/images/guide/daily-spending-wallet/[email protected]" alt-text = "Image of daily spending wallet prototype" width = 800 height = 500 %}
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]({{ '/guide/resources/code-resources/' | relative_url }}) available, such as UI libraries and example wallet builds.
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.
{% include image.html image = "assets/images/guide/daily-spending-wallet/icon-first-use.png" retina = "assets/images/guide/daily-spending-wallet/[email protected]" alt-text = "" width = 100 height = 100 layout = "float-left" link-url = "/guide/daily-spending-wallet/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.
{% include image.html image = "assets/images/guide/daily-spending-wallet/icon-backup-recovery.png" retina = "assets/images/guide/daily-spending-wallet/[email protected]" alt-text = "" width = 100 height = 100 layout = "float-left" link-url = "/guide/daily-spending-wallet/backup-and-recovery/landing-page/" %}
[Backup & recovery]({{ '/guide/daily-spending-wallet/backup-and-recovery/landing-page/' | relative_url }})
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]({{'/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/' | relative_url}}) option. Users may opt to perform a [manual backup]({{'/guide/daily-spending-wallet/backup-and-recovery/manual-backup/' | relative_url}}) instead or in addition. This app has [recovery]({{'/guide/daily-spending-wallet/backup-and-recovery/recovery/' | relative_url}}) flows that guide the user in restoring access to their wallet.
{% include image.html image = "assets/images/guide/daily-spending-wallet/icon-requesting.png" retina = "assets/images/guide/daily-spending-wallet/[email protected]" alt-text = "" width = 100 height = 100 layout = "float-left" link-url = "/guide/daily-spending-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.
{% include image.html image = "assets/images/guide/daily-spending-wallet/icon-sending.png" retina = "assets/images/guide/daily-spending-wallet/[email protected]" alt-text = "" width = 100 height = 100 layout = "float-left" link-url = "/guide/daily-spending-wallet/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.
{% include image.html image = "assets/images/guide/daily-spending-wallet/icon-activity.png" retina = "assets/images/guide/daily-spending-wallet/[email protected]" alt-text = "" width = 100 height = 100 layout = "float-left" link-url = "/guide/daily-spending-wallet/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.
{% include image.html image = "assets/images/guide/daily-spending-wallet/icon-contacts.png" retina = "assets/images/guide/daily-spending-wallet/[email protected]" alt-text = "" width = 100 height = 100 layout = "float-left" link-url = "/guide/daily-spending-wallet/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.
{% include image.html image = "assets/images/guide/daily-spending-wallet/icon-security.png" retina = "assets/images/guide/daily-spending-wallet/[email protected]" alt-text = "" width = 100 height = 100 layout = "float-left" link-url = "/guide/daily-spending-wallet/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.
{% include image.html image = "assets/images/guide/daily-spending-wallet/icon-privacy.png" retina = "assets/images/guide/daily-spending-wallet/[email protected]" alt-text = "" width = 100 height = 100 layout = "float-left" link-url = "/guide/daily-spending-wallet/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.
{% include image.html image = "assets/images/guide/daily-spending-wallet/icon-settings.png" retina = "assets/images/guide/daily-spending-wallet/[email protected]" alt-text = "" width = 100 height = 100 layout = "float-left" link-url = "/guide/daily-spending-wallet/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]({{ '/guide/daily-spending-wallet/first-use/' | relative_url }}) of the daily spending wallet.
{% include next-previous.html previousUrl = "/guide/designing-products/accessibility/" previousName = "Accessibility" nextUrl = "/guide/daily-spending-wallet/first-use/" nextName = "First use" %}