From 92a8b6d5774374cb892e211c16f37b32e59e8749 Mon Sep 17 00:00:00 2001 From: Philipp Walter Date: Sat, 12 Nov 2022 14:18:39 +0100 Subject: [PATCH] docs: add docs for development & build --- BUILD.md | 25 +++++++++++++++++++++ CONTRIBUTING.md | 8 ++----- DEVELOPMENT.md | 49 +++++++++++++++++++++++++++++++++++++++++ README.md | 58 +++++++++++++++---------------------------------- 4 files changed, 93 insertions(+), 47 deletions(-) create mode 100644 BUILD.md create mode 100644 DEVELOPMENT.md diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 000000000..41ba1aef8 --- /dev/null +++ b/BUILD.md @@ -0,0 +1,25 @@ +# Building Bitkit from source + +## Setup + +1. Clone the repository + +```shell +git clone git@github.com:synonymdev/bitkit.git && cd bitkit +``` + +2. Switch Node version + +Switch to the Node.js version defined in `.nvmrc`. If `nvm` (or similiar) is installed on your system you can run `nvm use`. + +3. Install dependencies + +```shell +yarn install +``` + +## Build + +For iOS: Open the `ios` folder in Xcode to build the project. + +For Android: `yarn bundle` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4b0d4ce29..8581b5ac4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,10 +35,6 @@ When you're finished with the changes, create a pull request, also known as a PR - As you update your PR and apply changes, mark each conversation as [resolved](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request#resolving-conversations). - If you run into any merge issues, checkout this [git tutorial](https://github.com/skills/resolve-merge-conflicts) to help you resolve merge conflicts and other issues. -## Windows +## Development -Bitkit can be developed on Windows for Android only, to get up and running follow these steps: - -1. Install nodejs, the latest security release is [Node v16.18.1 (LTS)](https://nodejs.org/en/blog/release/v16.18.1/). -2. Install the java development kit, the simplest way is to download the [OpenJDK11](https://learn.microsoft.com/en-us/java/openjdk/download) MSI installer that creates the required environment variables. A reset of your machine may be required after. -3. Follow the React Native CLI Quickstart [guide](https://reactnative.dev/docs/environment-setup) to install Android studio, you may ignore the step to install openjdk11 via choco. +See [Development documentation](./DEVELOPMENT.md). diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 000000000..d8b2efc9b --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,49 @@ +# Development + +Make sure you have [setup your environment for React Native](https://reactnative.dev/docs/environment-setup). + +## Installation + +1. Clone the repository + +```shell +git clone git@github.com:synonymdev/bitkit.git && cd bitkit +``` + +2. Switch Node version + +Switch to the Node.js version defined in `.nvmrc`. If `nvm` (or similiar) is installed on your system you can run `nvm use`. + +3. Install dependencies + +```shell +yarn install +``` + +4. Set environment variables for development (optional) + +```shell +cp .env.development.template .env.development +``` + +5. Start the project + +On iOS Simulator: + +```shell +yarn ios +``` + +On Android Emulator: + +```shell +yarn android +``` + +## Troubleshooting + +When running into issues there are a couple things to check. + +- Clean caches & build folders: `yarn clean` +- Clean simulator cache (iOS): `xcrun simctl erase all` +- Increase emulated device storage (Android): `Android Studio -> Virtual Device Manager -> Edit Device -> Show Advanced Settings -> increase RAM, VM heap and Internal Storage sizes` diff --git a/README.md b/README.md index c395c820c..1f1dbf1d3 100644 --- a/README.md +++ b/README.md @@ -16,68 +16,44 @@ Bitkit enables users to reclaim their digital life. -Bitkit puts users in control of their money and payments, social profile, contacts, and payment preferences; allows users to authenticate to servers with just a tap; and allows users to stream data from public feeds and web accounts, all within one application. What Bitcoin has done for money and payments, Bitkit also extends to other areas of digital life. - -Bitkit is a mobile application available on Android and iOS, and implemented using React-Native. +Bitkit puts users in control of their money and payments, social profile, contacts, and payment preferences; allows users to authenticate to servers with just a tap; and allows users to stream data from public feeds and web accounts, all within one application. What Bitcoin has done for money and payments, Bitkit also extends to other areas of digital life. +Bitkit is a mobile application available on Android and iOS, and implemented using React-Native. ## The problem -Society, the economy, and the Web have been overcome by oppressive central controls, resulting in censorship, privacy breaches, and monopoly behaviors that stifle the marketplace of goods and ideas. Users need P2P tools that set them free. - +Society, the economy, and the Web have been overcome by oppressive central controls, resulting in censorship, privacy breaches, and monopoly behaviors that stifle the marketplace of goods and ideas. Users need P2P tools that set them free. ## Bitkit's solution -Bitkit offers a Bitcoin wallet that supports both on-chain and lightning transactions. The application runs a custom, non-routing Lightning node created with the [Lightning Development Kit](https://github.com/lightningdevkit) on the user's mobile phone. It requires a connection to an external server running a Bitcoin full node and an Electrum server. - -We automatically on-board users to Lightning through the integration of our lightning service provider (LSP) [Blocktank](https://github.com/synonymdev/blocktank-client). Developers can also create their own LSP using Blocktank. In the future, we will support users to connect to their own Lightning and Bitcoin nodes, select different types of LSPs, couple hardware wallets, and manage their own Lightning channels. +Bitkit offers a Bitcoin wallet that supports both on-chain and lightning transactions. The application runs a custom, non-routing Lightning node created with the [Lightning Development Kit](https://github.com/lightningdevkit) on the user's mobile phone. It requires a connection to an external server running a Bitcoin full node and an Electrum server. -Users can back up all their on-chain Bitcoin data with a standard BIP-39 seed. Lightning channel data should automatically be stored on a backup server. The data needs to be encrypted on the client-side before it is sent to a server to ensure privacy. You can view our code [here](https://github.com/synonymdev/bitkit-backup-client). +We automatically on-board users to Lightning through the integration of our lightning service provider (LSP) [Blocktank](https://github.com/synonymdev/blocktank-client). Developers can also create their own LSP using Blocktank. In the future, we will support users to connect to their own Lightning and Bitcoin nodes, select different types of LSPs, couple hardware wallets, and manage their own Lightning channels. -The other main features Bitkit supports are the creation of social profiles; the importing and managing of contacts; dynamic payment profiles; key-based account logins; and the display of public data feeds and private account data through in-application widgets. You can experiment with these features in our [playground](https://synonym.to/products/slashtags#playground). We currently support three public data widgets: a bitcoin [price feed](https://github.com/synonymdev/slashtags-widget-price-feed), a bitcoin [news feed](https://github.com/synonymdev/slashtags-widget-news-feed), a bitcoin [block data feed](https://github.com/synonymdev/slashtags-widget-bitcoin-feed). +Users can back up all their on-chain Bitcoin data with a standard BIP-39 seed. Lightning channel data should automatically be stored on a backup server. The data needs to be encrypted on the client-side before it is sent to a server to ensure privacy. You can view our code [here](https://github.com/synonymdev/bitkit-backup-client). -All these additional features are powered by Slashtags: an open-source protocol for creating secure and scalable peer-to-peer applications. You can view our JavaScript-based software development kit which has been used for the Bitkit wallet [here](https://github.com/synonymdev/slashtags). +The other main features Bitkit supports are the creation of social profiles; the importing and managing of contacts; dynamic payment profiles; key-based account logins; and the display of public data feeds and private account data through in-application widgets. You can experiment with these features in our [playground](https://synonym.to/products/slashtags#playground). We currently support three public data widgets: a bitcoin [price feed](https://github.com/synonymdev/slashtags-widget-price-feed), a bitcoin [news feed](https://github.com/synonymdev/slashtags-widget-news-feed), a bitcoin [block data feed](https://github.com/synonymdev/slashtags-widget-bitcoin-feed). -The Slashtags protocol allows for the creation of cryptographic keypairs, known as "slashtags", derived from the same BIP-39 seed as the user's Bitcoin wallet. Typically these slashtags are associated with networked “drives” known as hyperdrives, which can be discovered, read, and seeded by peers on a network. The group of peers that stores some or all of the drive’s data is known as its swarm. +All these additional features are powered by Slashtags: an open-source protocol for creating secure and scalable peer-to-peer applications. You can view our JavaScript-based software development kit which has been used for the Bitkit wallet [here](https://github.com/synonymdev/slashtags). -While much of the power of Slashtags comes via these hyperdrives, the keypairs that can be generated with Slashtags also can have important utility on their own. Bi-lateral, peer to peer authentication between a user and a server can, for example, be realized just on the basis of keypairs. +The Slashtags protocol allows for the creation of cryptographic keypairs, known as "slashtags", derived from the same BIP-39 seed as the user's Bitcoin wallet. Typically these slashtags are associated with networked “drives” known as hyperdrives, which can be discovered, read, and seeded by peers on a network. The group of peers that stores some or all of the drive’s data is known as its swarm. -All Slashtags data is exchanged within a Kademlia-based distributed hash table system. +While much of the power of Slashtags comes via these hyperdrives, the keypairs that can be generated with Slashtags also can have important utility on their own. Bi-lateral, peer to peer authentication between a user and a server can, for example, be realized just on the basis of keypairs. -You can read more about Slashtags on our [website](https://synonym.to/products/slashtags) and on our SDK's [Github page](https://github.com/synonymdev/slashtags). Slashtags predominantly builds on the lower-level functionality of the Hypercore stack. You can learn more about the Hypercore stack [here](https://hypercore-protocol.org/) as well as from the two main Github projects [here](https://github.com/hypercore-protocol) and [here](https://github.com/hyperswarm). +All Slashtags data is exchanged within a Kademlia-based distributed hash table system. -Slashtags user data should be automatically replicated via a [seeding server](https://github.com/synonymdev/slashtag-seeding-server). In this way, user data is always available. In addition, it allows the user to restore all their Slashtags data from just their BIP-39 seed. +You can read more about Slashtags on our [website](https://synonym.to/products/slashtags) and on our SDK's [Github page](https://github.com/synonymdev/slashtags). Slashtags predominantly builds on the lower-level functionality of the Hypercore stack. You can learn more about the Hypercore stack [here](https://hypercore-protocol.org/) as well as from the two main Github projects [here](https://github.com/hypercore-protocol) and [here](https://github.com/hyperswarm). +Slashtags user data should be automatically replicated via a [seeding server](https://github.com/synonymdev/slashtag-seeding-server). In this way, user data is always available. In addition, it allows the user to restore all their Slashtags data from just their BIP-39 seed. ## Support -If you are experiencing any problems with Bitkit, please open an issue and use the template provided, or reach out to us on [telegram](https://t.me/bitkitchat). - +If you are experiencing any problems with Bitkit, please open an issue and use the template provided, or reach out to us on [telegram](https://t.me/bitkitchat). ## Installation -1. Clone Bitkit - -```shell -git clone git@github.com:synonymdev/bitkit.git && cd bitkit/ -``` - -2. Install dependencies - -```shell -yarn install -``` - -3. Set environment variables for development (optional) - -```shell -cp .env.development.template .env.development -``` +[Download](https://github.com/synonymdev/bitkit/releases) or [Build it from source](./BUILD.md). -4. Start the project +## Development -```shell -yarn ios -#or -yarn android -``` +See [Development documentation](./DEVELOPMENT.md).