Skip to content

βš›οΈ 🌐 Access the Interplanetary File System (IPFS) from React Native without trusted third parties.

License

Notifications You must be signed in to change notification settings

cawfree/react-native-gomobile-ipfs

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

35 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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

About

βš›οΈ 🌐 Access the Interplanetary File System (IPFS) from React Native without trusted third parties.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 38.7%
  • C++ 14.5%
  • JavaScript 11.9%
  • Objective-C++ 8.8%
  • TypeScript 6.8%
  • Ruby 6.0%
  • Other 13.3%