Code Monkey home page Code Monkey logo

guide's Introduction

Bitcoin Design Guide

This is the repository for the Bitcoin Design Guide, and the bitcoin.design community website.

Discussion and collaboration is taking place in the Bitcoin Design Discord (#bitcoin-design-guide).

The Bitcoin Design Guide is a free open-source community resource that helps designers, developers and others working on non-custodial bitcoin-products to create better experiences faster. We hope that, over time, it will cover all relevant types of products, including consumer wallets, merchant interactions, exchanges and more. Better products and experiences should ultimately make it more appealing for anyone to own and use bitcoin.

An equally important goal is that the process of creating this guide nurtures an open-source bitcoin design community that can carry this, and other projects forward longer term. The Bitcoin Design Discord and the bitcoin.design website are the first steps in this direction.


Process and how to contribute

The process of creating the guide is meant to be as open and decentralized as possible, resulting in a sustainable model to run projects with the community. Most of the discussion happens in the Bitcoin Design Discord, in the #bitcoin-design-guide channel, and here on GitHub in Issues, Pull requests and Discussions. Also see the roadmap for an overview of current and upcoming activities.

You can read more about how to contribute.

Guide Content

The guide is meant to be a simple starting-point for anyone looking to build bitcoin-based applications, while providing deeper topics and value for more experienced bitcoin designers. Bitcoin is the platform, and the guide should provide information and resources that should be consistent across applications built on top of it.

The guide is still being created and should be seen as an evolving resource. Similar to the iterative design process, it starts with core parts then grows in ambition based on community support.

Here is the content that is currently live:

The Bitcoin Design Guide


Origin and history

The process to create the guide started in the summer of 2020. The first draft outlines of the guide first existed as Google Docs, here are Version 1 and Version 2 for reference.

On June 2, 2021, the community announced the launch of the initial version of the Bitcoin Design Guide to the public.

On February 9, 2022, the community announced the completion of a major revision of the guide to include content about the lightning network.

See the roadmap for what we're currently working on.


How to build and run the site locally

You'll want to run the site locally to test your changes.

Make sure you have Ruby and Bundler installed:

  1. Check that Ruby is installed (check with ruby -v). Must be 2.2.5 or higher. Install instructions can be found at https://www.ruby-lang.org/en/documentation/installation/.
  2. If you don't already have Bundler (check with which bundle), you can install by following the instructions at https://bundler.io.

Clone the source code, build, and serve:

  1. Fork this repository and clone it git clone https://github.com/< your fork of this repository >
  2. Change into the cloned directory cd guide
  3. Run bundle install
  4. Run bundle exec jekyll serve
  5. Browse the site at http://127.0.0.1:4000/

To run on gh-pages, uncomment the base_url variable in _config.yml.

baseurl: "bitcoin-design-guide"

To test your HTML for errors, run the rake script via rake test.

Docker You can also run site locally with Docker.

  1. Install docker
  2. cd into a directory, for example cd Documents/Guide
  3. Run docker-compose up (you may need to wait for 5-10 minutes)

guide's People

Contributors

barefoot-88 avatar bosch-0 avatar dangould avatar danielnordh avatar dependabot[bot] avatar deviouslab avatar gbks avatar git-sgmoore avatar iamsanjana avatar imtiaan avatar jakey-ads avatar johnsbeharry avatar joseabarreram avatar mouxdesign avatar mutatrum avatar nityagupta6 avatar paulosacramento avatar pavlenex avatar pedromvpg avatar pragya1976 avatar prusnak avatar rabbitholiness avatar rutuja-kelkar avatar sbddesign avatar sqcken avatar stackingsaunter avatar steynviljoen67 avatar toporas avatar yantiarifin avatar yashrajd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

guide's Issues

Design a better social preview image

Reported by @moneyball

It seems we can add a social image that can pop a in people's timelines.

What we currently have

Screenshot from 2021-01-18 20-15-52

Template

repository-open-graph-template

Someone can design it, then it'll need to be uploaded to the GitHub here.
Screenshot from 2021-01-18 19-46-05

Onboarding section landing page

This issue creates the introductory page for the onboarding section and outlines the upcoming content that will be part of this section.

You can read the proposed section here

Create page for on-chain wallet recovery / account scanning

parent: Recovery
title: Recovering an on-chain wallet
permalink: /guide/recovery/on-chain

How does the wallet arrive at it's balance and what are the problems that the user may encounter during the process?

  • Derivation Paths
  • Choosing Address Type
  • Selecting Account
  • Defaults
  • Gap Limit

Create page - Recovery backup storage 101

Create a simple best practice / backup storage options page for reference.
Somewhere we can point people to when creating new keys with a recovery phrase that needs to be backed up.

Consider:

  • Redundancy (if, when and how to create several backups)
  • Physical resistance (grades of resistance from paper --> metal)
  • Resistance to usage on discovery (whoever finds the full recovery phrase can access funds)

Should cover:

  • Basic paper backup
  • Metal and other alternative materials
  • Where to store
  • Inheritance planning

Could also mention:

  • Multiple hardware keys to the same wallet instead of backups
  • An extra (13th or 25th) word that is memorized instead of written down
  • Splitting the recovery phrase to store in different locations

Create github labels for design components

Some labels that come off the top of my head

  1. Fees
  2. Addresses
  3. Transactions (verifying you are sending money to the correct place)
  4. Private key
  5. ...

So now if you github issue/PR has is related to one of these topics, you should add the label to it so we can sort by these labels in the future. For a code based repo, this is what this ends up looking like if you are disciplined about this:

Screenshot from 2020-07-22 12-03-44

As you can see from the image, you sort by things like "bug" or "documentation" etc to find all relevant information for that topic.

Create content for a "Contribute" page

The site nav currently has "Contribute" navigation item. The content for that page has not been really defined. However, we do have some good info in the readme of the Meta repo we could use, right here.

So I see three options:

  1. Make that nav item link out to the Guide readme (meaning we won't have a nicely designed page, but people will have to read a Github page for that info)
  2. Create new content for the "Contribute" page based on the Guide readme (so we will have a nice-looking page in the Guide repo, and the info in the Meta readme. There may be some content duplication)
  3. Move the Meta readme content over to the Guide repo so we can have an nicely designed page there

I'm for option 2. It allows us to have a more approachable visitor-facing page, and then more functional Meta readme with additional info for experienced contributors.

Start collaboration on a glossary

There have been various discussions on Slack and in calls where we had to clarify terms. Let’s try to gather and clarify them, so we can present clear language to users that will allow them to more easily understand and use bitcoin.

We should define whether we want this to be a general glossary (of which there might be other good ones online already), or whether we target it towards readers of the bitcoin design guide and their particular use cases. For example, each term could have a more technical description for the reader, and a second version that can be presented to users that is more focused on usage than technical comprehension.

Here's a Google Doc to kick things off. Once it's in a decent shape, we can move the content to this repo (probably to glossary.md).

Break glossary.md into sub glossaries

Might be worth breaking the glossary.md file up into sub glossaries to prevent this page becoming too unruly.

Some examples of sub glossaries:

Lightning
Wallets
Nodes
BIPS

Foundations / Units & Symbols

type: page
title: Units & Symbols
permalink: /guide/payments/units-and-symbols/
file: guide/payments/units-and-symbols.md

Looking for someone to research and write this foundations page relating to payments.
Below is a rough outline to get you going.

Units

Currently there are two units that are widely used in apps, bitcoin and satoshi (sats). Satoshi seems to be what is used mostly within apps that support lightning payments. Bitcoin with 8 decimals is the unit common to onchain payments. Making a 1 satoshi payment in a transaction onchain isn't going to be so economical.

On lightning network the base unit is millisatoshi/msats which is a subunit of satoshis (I've never seen this exposed in a UI though).

There are also other units which are less used colloquially, and it's an interesting the process of how these units come into use. Should they also be included in the guide (see Units)?

Symbols / Codes

  • What symbols and codes exist?
  • What are different symbols/codes which are popularly used?
  • Are there cases where one should be used over another?
    • e.g. What is the impact by the limited support for the bitcoin unicode symbol (see #5) ?

Consider Amount Display

Once these foundations are written - you should have a good base to explore Amount Displays more deeply. @GBKS has captured some of the early conversations around amount display in the community slack in issue #3 and can actually be included as is for a first version.

REF

Decide on a domain name for the website

There have been several open discussions in Slack around which domain to use for the website, with various preferences but no conclusion. I'd like to review the options here again, make a suggestion, and ask for input.

Domains owned by community members (please comment if you have more):

  • designingbitcoin.org
  • designbitcoin.org
  • bitcoindesign.net
  • designforbitcoin.org
  • bitcoin.design
  • bitcoindesigners.org (used in the Square Crypto announcement and a current redirect to the Slack workspace)
  • bitcoindesigners.com

Domain we can try to purchase (do you have more ideas?):

  • bitcoindesign.org (anyone know who owns this?)
  • bitcoindesign.com (costs $6,500)

My recommendation:

  • Use bitcoin.design
  • Redirect bitcoindesigners.org and bitcoindesigners.com to bitcoin.design

Either way we go, the domain we end up with will likely be owned by a community member. Probably not a huge risk factor, just something to be aware of and have a Plan B for. Maybe we pick a second domain that also links to the site, just in case our community devolves into chaos and we end up not being BFFs anymore.

What do you think we should do?

Decide whether we want a "Projects" page

The site nav currently has a "Projects" option with a list FOSS bitcoin projects (Wasabi, bisq, etc). I believe the idea is to present projects the community likes or is involved in.

Is this something we want? The idea generally sounds good, but might not be so easy to implement since it could be tricky to identify requirements for projects to be included.

Custom styling and interaction model for the glossary

The glossary page will get pretty long and tedious to use. Here's a suggested design where all terms are collapsed by default and can be expanded. There's also an inline search-bar to instantly filter the page content as the user types, to more quickly get to what they are looking for.

glossary-201021

Here's the design in Figma.

Design V2 of the website

V1, which is a placeholder site, is being discussed here. For V2, @AlexaAker has kicked us off with some good design concepts and explorations, so I thought I'd create a dedicated issue for V2 to gather and continue this work.

Since we are still figuring out both content and visual design for the site, I assume we'll go back and forth on a few different ideas and explorations. This should be a fun process. Please add any relevant links I missed.

Explore Github Pages for hosting the guide website

There are several advantages to hosting the site via Github pages:

  • Integrated with the Github collaboration tools
  • Automatically reflects the latest codebase without any complex deploy processes
  • Easy to configure due to Jekyll integration
  • Integration with third-party tools like Transifex for localization

There are some known basics we can already explore (templating, search function, localization), but we will have to wait for the content and design to progress further to really know what all of our requirements are. We can either keep this issue open, or focus it on the basics and create more issues for future improvements.

References:
Github pages marketing page
Screencasts by Christoph

Explore tech frameworks to use for the site

So far we have discussed Jekyll, VuePress and Gatsby as options. They are all based on markdown content, to allow for easy editing without complex technical requirements. Let's gather the benefits and disadvantages of each one based on our goals and requirements and decide on a direction.

Slack conversation

Considerations:

  • Easy to add and edit content by non-technical contributors (markdown based)
  • Easy to set up a local environment (for both tech and content contributors)
  • Support for custom components in markdown
  • Stable framework with good ecosystem
  • Github pages can automatically build and deploy when code is merged
  • Low learning curve for technical contributors
  • Support static pages and blogging (potentially needed in the future)
  • What else...?

Proposal to rename this repository from "Guide" to "Website"

As of today, we're including the guide as a part of a website which will include other sections: projects, contribute, and more in the future.

Do we want to consider encompassing everything under a "website" repository? Or is it better to keep the guide separate?

I think for now, as we grow the content from nothing, it would make sense to have everything under one roof, and then separate if it becomes much much bigger and justifies multiple repos.

Create a page for design collaboration and shared design resources

I think a page like this could help us with two things.

First, it looks like we will be using Figma for many designs due to the ease of sharing and collaboration. While Github has many pre-defined processes built-in, Figma and other design tools do not. So I think it would be helpful if we articulate these for us.

Second, there are a few design resources being worked on that we will make publicly available for anyone to use and contribute to. Currently we have many Figma links floating around with no way to find them again other than asking around or searching Slack/Figma history. We can also list important design resources on this page.

This page would likely be under "Resources".

Below is a mock-up with some quickly written copy. What do you think of this? Note that this is heavily slanted towards collaborating on Figma community files. So this might need to be a sub-page under a more general "Design collaboration" or "Open design" section that is tool-agnostic.

Design collaboration page 201019

Create page for Transaction History

parent: Managing Funds
permalink: /guide/managing-funds/transaction-history

A transaction history is usually displayed as a table or a list with items in chronological order.

  • What is special about the bitcoin transaction history?
  • State the primary attributes that need to be shown
  • Saving meta data
  • Define the available actions that are possible taking into consideration the different transaction states

Related

  • Hide Amounts / Privacy Mode
  • Amount Scanning / Gap Limit (troubleshooting)
  • Labels

Need to establish process to update Slack invite link once a month

Unfortunately Slack expires the public invite link once a month and it must be manually recreated. I will need to do this and then open a PR to update the website in a timely fashion. Perhaps we make an exception for this particular change so that I can merge straightaway without review/approval (or, reviews can come post-merge).

Thoughts?

Explore ways to encourage typeface designers to include bitcoin symbol U+20BF

There are also a large amount of typefaces missing the Bitcoin symbol on fonts.google.com as these are very widely used on the web.

  • How many? Could be a good starting point to for analysis.

“How to include” is not the hard part, any pro type designer can do this easily. Motivation to include this glyph in the font vs many other currency symbols, other punctuation, other language accents, etc is the difference. If we are not sure it will be used it doesn't get a high priority, but a bounty would change that

From a discussions in #BitcoinDesign slack

Example

Define audience for the guide

A common understanding of the audience is helpful for writers to adopt appropriate language and weight off what to include and exclude.

This Google doc started by @johnsBeharry and I is a starting point we can iterate and then turn into a PR.

Create page for Requesting Payments

title: Requesting Payments
permalink: /guide/requesting-payments

Introduce core payment request data structure.

  • Label/Observer
  • Memo
  • Expiration
  • Address/Invoice

Formats

  • BIP21
  • BOLT11
  • BIP21 Encoded with BOLT11

Sharing

  • QR Codes
  • Copy/Paste
  • Transporting Across Apps

Create a page about node connection options

Every (well, almost every) Bitcoin application at some point needs to connect to the Bitcoin network to retrieve data or publish transactions. This can happen in different ways, each one with advantages and disadvantages. I think it would be helpful to lay these out, so designers and developers can choose the one that is most appropriate for their product.

This stems from a Twitter/Slack conversation a few days ago that led me to create this image (Figma):

Note options 201215

Create Payments section landing page

This issue creates the introductory page for the payments section and outlines the upcoming content that will be part of this section.

You can read the proposed section here

Create Review.md - Explain how to review a pull request (proposed change)

Reviews of pull requests are equally important contributions as their creation.

After #125 gets reviewed and merged, I'd like to create Review.md a page that will teach the basics of reviewing a pull request together with best practices.

Here's the current structure I have in mind:

  • Reviewing a proposed change
    • Prerequisites
      • Identifying what to review
      • Reviewing a pull request (actual process explained)
        - Best practices
      • Testing a pull request
        • Testing via Netifly
        • Testing locally

The creation of this page also includes 2 videos:

  • How to review a proposed change
  • How to test a proposed change

Usually, in software development, code(content) review is a separate process from testing, but since we're a content-focused project, I wanted to do it on a single page.

If there are any ideas, questions, or things you'd like to have covered here, let me know.

Proposal for a placeholder landing page design

I'd like to propose this design as the very first version of the website for the Bitcoin Design community (decision on the domain is discussed here). I first submitted this for feedback last Friday in Slack here and a variation of it on July 8. This page is built (on the Jekyll setup we discussed) and ready to go live if we want to (see it in action here).

Minimal site 2 200724

The Figma file for the design is published on the Figma community, you are welcome to duplicate it, put your own spin on it and suggests improvements. If you want to comment on the design, check the Figma source file here.

This is meant as a minimal, temporary placeholder so we can get something live soon. My sense from Slack conversations (example) has been that many prefer to go live and iterate fast, compared to trying to build a more complete V1 that will take weeks/months to complete.

Create a section on interoperability

Whether it's for payment, wallet import/export or multi sig, it's ideal if applications are compatible so users can interact seamlessly with each other and use whatever software configuration they want. For designers then it is important to understand what those touchpoint are (not necessarily the technical details, but more so the user needs and flows). So I started taking notes in a Google Doc in the hope that this can become a section of the guide.

See the doc

Revise `External signers` page in `How it works` section

This has been brought up a few times. It could cover topics like...

  • Use cases
  • Hardware wallet UI design considerations
  • Interaction between hardware and software wallets
  • Features
  • Popular products and product categories

The "Hardware" overview page has a short section about hardware wallets. This new page would be a natural extension of that content, but could also be linked to from relevant content in other sections (like private key management and transactions).

Create a "Principles" page in "Foundations"

Several sections outline principles, with some overlap already visible. Let's extract those and move them to a dedicated page. This will allow us to have a common basic understanding of those ideas. Each page then can focus on explaining how the relevant principles apply to that particular content.

Some principles I've seen described (there's probably a lot more, I just picked out ones I could quickly find):

  • Permissionlessness
  • Trust
  • Privacy (onboarding, private key management, privacy)
  • Security
  • No loss of funds (private key management)
  • Interoperability (private key management)
  • Progressive security (private key management)

Links:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.