Textile CLI/daemon, Desktop Application, and iOS/Android Mobile Bindings
Clone or download
sanderpick Merge pull request #350 from textileio/sander/1.0.0-rc1
chore(release): bump to 1.0.0-rc1 for dev release
Latest commit 7a55aa5 Nov 10, 2018
Permalink
Failed to load latest commit information.
.circleci fix(ci): no need to build during unit tests Oct 27, 2018
archive refactor(core): refactor modules Sep 21, 2018
cmd feat(announces): add announce block handling Nov 4, 2018
core fix(todos): clean up pinned invite and notif on accept Nov 4, 2018
crc16 feat(wallet): initial commit for hd ed25519 wallet Sep 20, 2018
crypto feat(cmd): add image cmd Oct 29, 2018
desktop feat(announces): add announce block handling Nov 4, 2018
dist fix(dist): remove binary oops Oct 29, 2018
gateway feat(cafe): cafe hosts -> bootstrap peers Nov 2, 2018
images fix(cmd): some cleanups Oct 29, 2018
ipfs feat(mobile): thread id optional when ls photos Oct 30, 2018
jwt feat(cafe): cafe hosts -> bootstrap peers Nov 2, 2018
keypair fix(tests): fix tests, mv cafe to core api package Oct 27, 2018
mobile chore(release): bump to 1.0.0-rc1 for dev release Nov 9, 2018
pb feat(announces): add announce block handling Nov 4, 2018
repo feat(announces): add announce block handling Nov 4, 2018
script fix(desktop): fix up with new flow Apr 25, 2018
service feat(logging): piggyback on ipfs logging system Oct 28, 2018
ssl feat(logging): piggyback on ipfs logging system Oct 28, 2018
strkey feat(cmd): add image cmd Oct 29, 2018
wallet feat(wallet): move wallet to top level commands [skip ci] Sep 28, 2018
.dockerignore fix(tests): try internal package May 3, 2018
.gitattributes fix(core): allow node to be cleanly stopped and restarted May 5, 2018
.gitignore fix(cmd): some cleanups Oct 29, 2018
Dockerfile fix(docker): cafe image fix Jul 24, 2018
Gopkg.lock feat(logging): piggyback on ipfs logging system Oct 28, 2018
Gopkg.toml feat(logging): piggyback on ipfs logging system Oct 28, 2018
LICENSE first pass, need to standardize thumb format Mar 17, 2018
Makefile chore(cafe): more old cafe rest api cleanup [skip ci] Oct 18, 2018
README.md docs(readme): update to include on going cmd work Oct 31, 2018
commitlint.config.js chore(cleanup): cleanup deps, tests Apr 8, 2018
docker-compose.yml fix(docker): cafe image fix Jul 24, 2018
package.json chore(release): bump to 1.0.0-rc1 for dev release Nov 9, 2018
test_compile.sh feat(cmd): add image cmd Oct 29, 2018
textile.go feat(cafe): cafe hosts -> bootstrap peers Nov 2, 2018
yarn.lock chore(cleanup): cleanup deps, tests Apr 8, 2018

README.md

textile-go

banner


MIT License Go Report Card Commitizen friendly CircleCI

Status

Throughput Graph

What is Textile?

Riding on IPFS and libp2p, Textile aims to provide a set of straightforward primitives for building decentralized mobile applications.

This repository currently contains a CLI/daemon, a desktop application, and iOS/Android mobile bindings for running a Textile Photos node. See textile-mobile for the Textile Photos iOS/Android app.

Install

Download the latest release for your OS.

Usage

NOTE: The command line tool currently has limited access to the internal node APIs. We're quickly mapping everything over to a newly designed REST API and command line tool. Stay tuned for docs.

~ $ textile --help
Usage:
  textile [OPTIONS] <command>

Help Options:
  -h, --help  Show this help message

Available commands:
  address  Show wallet address
  daemon   Start a node daemon
  images   Manage images
  init     Init the node repo and exit
  migrate  Migrate the node repo and exit
  peer     Show peer ID
  ping     Ping another peer
  shell    Start a node shell
  threads  Manage threads
  version  Print version and exit
  wallet   Manage a wallet of accounts

Textile uses an HD Wallet as an account key manager. You may use the name derived account seed on multiple devices to sync wallet data. To get started, run:

$ textile wallet init

This will generate a recovery phrase for all your accounts. You may specify a word count and password as well (run with --help for usage).

Next, use an account from you wallet to initialize a node. First time users should just use Account 0, which is printed out by the wallet init subcommand. Use the accounts subcommand to access deeper derived wallet accounts.

$ textile init -s <account_seed>

Finally, start the daemon:

$ textile daemon

TODO: Run through creating a thread, adding images, comments, etc.

Contributing

$ go get github.com/textileio/textile-go

You'll need a few different tools here to get setup...

Install dep

Golang package manager:

$ brew install dep

Install gx

IPFS package manager:

$ go get -u github.com/whyrusleeping/gx
$ go get -u github.com/whyrusleeping/gx-go

Install node

NodeJS is used for git hooks and some build tooling:

$ brew install node

Install dependencies

Finally, download deps managed by gx and dep:

$ npm run setup

Building

There are various things to build:

CLI/daemon

$ make build

iOS Framework

$ go get golang.org/x/mobile/cmd/gomobile
$ gomobile init
$ make ios_framework

Android Framework

$ go get golang.org/x/mobile/cmd/gomobile
$ gomobile init
$ make android_framework

Desktop Application

WARNING: Desktop is an unmaintained experiment. Security issues may exist.

The build is made by a vendored version of go-astilectron-bundler. Due to Go's painful package management, you'll want to delete any go-astilectron-related binaries and source code you have installed from github.com/asticode in your $GOPATH. Then you can install the vendored go-astilectron-bundler:

$ go install ./vendor/github.com/asticode/go-astilectron-bundler/astilectron-bundler

Pick your OS: Linux, Darwin, or Windows:

$ cd desktop
$ astilectron-bundler -v -c bundler.linux.json
$ astilectron-bundler -v -c bundler.darwin.json
$ astilectron-bundler -v -c bundler.windows.json

Double-click the built app in desktop/output, or run it directly:

$ cd desktop && go run *.go

See go-astilectron-bundler for more build configurations.

Note: Because cgo is required, you'll need to setup a proper C toolchain for cross-OS-compilation.

Commitizen

The easiest way to write a valid commit message is to use the npm script:

$ npm run cm

This will start the interactive commit prompt.

Acknowledgments

While almost entirely different now, this project was jumpstarted from OpenBazaar. Thanks to @cpacia, @drwasho and the rest of the contributors for their work on openbazaar-go.

License

MIT