Berty is a secure peer-to-peer messaging app that works with or without internet access, cellular data or trust in the network
TODO: short headline.
TODO: short intro for non-tech. what is this repo about.
TODO: optional clarification for techs, if the short intro is not enough to understand what is this repo about.
TODO
See Modules if you don't want to dive into the code
(please use issues)
If you want to quickly try native mobile IPFS without writing any go, make an HTML module
TODO: Explain modules architecture
Modules are automatically added to the home tool list in the app
They allow you to run custom Go or JavaScript and programatically access a Gomobile-IPFS backed IPFS shell on mobile very quickly
You don't need to know JavaScript to create or run a Go module and you don't need to know Go to create or run a JavaScript module
HTML modules in a nutshell:
- Living at
rn/html-mods/ - Statically served at the root of a Go
http.FileServerstarted automatically by the Labs bridge - Accessed with a
react-native-webviewpointed at the embedded static server (thern/src/screens/HTMLModule.tsxscreen) - If the build of an HTML module fails, it will be skipped and building the app will continue
Create a new Labs HTML module by running
cd rn
make create-moduleAnd choosing one of bare, git or react
It will ask you a few questions and create the module boilerplate, every step is logged so you can understand what is going on
If you choose the react preset, you can use the dev-server from mobile with the Browser Labs tool
Or:
- Create a directory at
rn/html-mods/<your-module-name> - Add a Makefile at
rn/html-mods/<your-module-name>/Makefilewith the first rule creating:- The
rn/html-mods.bundle/<your-module-name>/index.htmlroot site file - The
rn/html-mods.bundle/<your-module-name>/info.jsonfile containing a JSON representation of theblmod.ModuleInfotype
- The
Go modules in a nutshell:
- Living at
go/mod/ - Need to be registered in
go/bind/labs/modules.gowhich can be done automatically by runningmake generate - Accessed with a generic UI that allows to run them, cancel runs and view their output (the
rn/src/screens/GoModule.tsxscreen) - If the build of a registered Go module fails, it will abort building the app
Create a new Labs Go module by running
cd rn
make create-moduleAnd choosing go as preset
Or:
- Create a Go module at
go/mod/<your-module-name> - Implement the
berty.tech/labs/go/pkg/blmod.Moduleinterface - Register the module in
go/bind/labs/modules.go
To develop a Go module faster, you can:
go run ./go/cmd/daemonto spawn a CLI Labs instancego run ./go/cmd/clientto access the modules with a CLI
TODO
If you want to help out, please see CONTRIBUTING.md.
This repository falls under the Berty Code of Conduct.
You can contact us on the #dev-💻 channel on discord.
Dual-licensed under Apache 2.0 and MIT terms.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
See the COPYRIGHT file for more details.
