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

22 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 Helios plugin to your Expo config (app.json, app.config.json or app.config.js):
{
  "expo": {
    "name": "my-app",
+   "plugins": [
+     "react-native-gomobile-ipfs"
+   ]
  }
}
  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%