Skip to content

Commit

Permalink
docs: add docs for development & build
Browse files Browse the repository at this point in the history
  • Loading branch information
pwltr committed Nov 12, 2022
1 parent 9bdb8ae commit 92a8b6d
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 47 deletions.
25 changes: 25 additions & 0 deletions BUILD.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Building Bitkit from source

## Setup

1. Clone the repository

```shell
git clone [email protected]: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`
8 changes: 2 additions & 6 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
49 changes: 49 additions & 0 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -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 [email protected]: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`
58 changes: 17 additions & 41 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 [email protected]: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).

0 comments on commit 92a8b6d

Please sign in to comment.