MMMMM client for Secure Scuttlebutt
ALPHA version! This is heavily under construction, not ready for real usage.
- React Native
- Node.js Mobile
- Cycle.js with xstream
- Pull streams
- react-native-workers (fork by staltz)
- Patchcore (with depject)
React Native specifics
v8.9.x and npm
v5.6.x, and follow the official React Native docs.
Also install the CLI:
npm install --global react-native-cli
If you are developing on a macOS, then you might need
realpath, install it through coreutils:
brew update brew install coreutils
You need Android Studio and a recent Android SDK (installable through Android Studio).
You may need to open your app's
/android folder in Android Studio, so that it detects, downloads and cofigures requirements that might be missing, like the NDK and CMake to build the native code part of the project.
You can also set the environment variable
ANDROID_NDK_HOME, as in this example:
Also check out nodejs-mobile repository for the necessary prerequisites for your system.
Build and run in development
You can run
npm run build-android-debug which will run all the necessary scripts in order. Or run each step manually:
1: Compile TypeScript files
npm run lib
2: Propagate replacement modules throughout all dependencies using propagate-replacement-fields:
npm run propagate-replacements
3: Build the "backend" Node.js project (which runs Scuttlebot):
npm run build-nodejs-app
4: Build the worker thread subproject:
npm run build-worker-android
5: Then build the Android apk:
During step 5, another terminal may spawn with the React Native Metro bundler. The app should be installed automatically, if you have a device connected by USB. You can see the logs with
react-native log-android or
To watch source code files and continuously compile them, use three terminals:
- One terminal running
$(npm bin)/tsc --watchto compile the TypeScript code
- One terminal running
npm run clean-bundler && npm start -- --reset-cachefor the Metro bundler
- One terminal where you can run
npm run build-android-debugto build the APK
There is no support for continuously compiling the worker thread nor the backend Node.js project.
On Android applications, the
react-native build process is sometimes unable to rebuild assets. If you are getting errors while building the application using
react-native run-android, then the command
npm run full-clean can help you do a clean rebuild of the project. Then, reinstall with
npm install and rebuild.
We use Appium and Tape, just plug in a device through USB and run
npm run test-e2e-android. This will run tests on top of the release variant of the app, so it that doesn't exist, you must run
npm run android-release first.
To build a release APK, follow these instructions, in short:
- Put the correct file
my-release-key.keystorein the folder
- Configure the file
~/.gradle/gradle.propertieswith the correct values