/react-native-gomobile-ipfs

⚛️ 🌐 Access the Interplanetary File System (IPFS) from React Native without trusted third parties.

Primary LanguageJavaMIT LicenseMIT

react-native-gomobile-ipfs

Access to the Interplanetary File System (IPFS) for React Native apps without depending upon trusted third parties.

Enables self-sovereign access to decentralized file systems for cross-platform applications. The property of decentralization is critical for dApps; where data verifiability, integrity and availability are of paramount importance; usually in applications which deal with censorship-resistance or demand reliable off-chain storage.

ℹ️ This project is a hard fork of tesseract-one/react-native-gomobile-ipfs 💕

react-native-gomobile-ipfs works by launching a dedicated Kubo RPC API v0 which can be easily accessed at runtime via traditional networking libraries such as axios.

🚀 Getting Started

You can install react-native-gomobile-ipfs using Yarn:

yarn add react-native-gomobile-ipfs

✏️ Usage

In this module, importing react-native-gomobile-ipfs exports a start() function, which allows the app to launch a localhost API. In the example below, we show how to cat the hello worlds tutorial hash:

import { start, getIpfsUri } from 'react-native-gomobile-ipfs';
import axios from 'axios';

const { stop } = await start();

const uri = getIpfsUri(); // i.e. "http://localhost:5001/api/v0"

const {data: result} = await axios({
  url: `${uri}/cat?arg=QmZ4tDuvesekSs4qM5ZBKpXiZGun7S2CYtEZRB3DYXkjGx`,
  method: 'post',
});

console.log(result); // "hello, worlds"

await stop();

By calling getIpfsUri(), we can determine the platform-specific localhost URI of our IPFS API. Once finished, we safely close() the resource to terminate the server.

For further demonstration, please check out the Example App.

📲 Running on Expo

  1. You can install to your project using npx expo install react-native-gomobile-ipfs.
  2. Next, you'll need to add the react-native-gomobile-ipfs plugin to your Expo config (app.json, app.config.json or app.config.js):
{
  "expo": {
    "name": "my-app",
+   "plugins": [
+     [
+       "react-native-gomobile-ipfs",
+       {
+         "bluetoothPermissionText": "$(PRODUCT_NAME) needs access to Bluetooth."
+       }
+     ]
+   ]
  }
}
  1. Once that's done, use npx expo prebuild to generate Expo-friendly native binaries.
  2. Finally, run eas build to build a new binary, or use yarn ios or yarn android to start running.

Note: To run eas build, you'll need to npm install --global expo-cli eas-cli.

🏗 Building from Source

To build from source for Android and iOS, you'll need the following tools installed:

⚠️ Currently the build process is only supported on Apple Silicon.

With these installed, run yarn gomobileup from the project root to generate the native binaries and link the example application.

✌️ License

MIT