Building my app and trying to get guidance

Hello,

I’ve been in the app game since the early 2000s, took a 10-year break for e-commerce and now I’m back. I’m trying to build my next app on top of ipfs but want to make sure I start with the right integration and plan.

  1. I would like to create user accounts, that have both private and public files. I would like the private files to stay on our private note, and the public be on the general ipfs network. We will be hosting both small and very large files.
  2. I would like the ability for users to stay anonymous, but have an easy way to tie something to their account like an email address, phone number, or an easy way to back up their account.
  3. I would like a decentralized database store that is private, for file metadata, user information, and search
  4. I would like to use our node to host the files initially, then push our files to our users to help store them. I would like this to work on desktop browser, and mobile as an app, and serve files to other users when on Wi-Fi.
  5. I don’t want my build to be reliant on any third-party storage (what to own my own storage) or any third party in case of abandonment of the project or the project going stale.
  6. If possible I would like to start out with one large server & data store, that host my node and pinning server.

In my research fission looks like it would work for this use case? If that is the true, can you tell me where to start my build? The end user case would be both on IOS and Android mobile app, and a desktop browser app.

I’m bootstrapping the build and have a very small budget so anyway to keep costs under control using open source solutions would be awesome. Hoping to get my vision of the new old free and open internet back.

Thank you so much in advance!:boom:

Via Discord

@boris we’re convinced webnative is the right solution for our project, a few more questions if you don’t mind.

  1. What is fission’s business model? How are you guys going to make money? What fees are we have to pay if any?
  2. On that note what breaks if you guys go away (heaven forbid) and if we build on the SDK is it future proof?
  3. How does it work if I want to bring my own storage space?
  4. Can I use PWA’s on all platforms, as well as you something like web wrappers for the app stores? Will the browser ipfs node run in the background as a pwa?
  5. When generating keys, do we have to use an ethereum wallet or can a user tie it to something like an email address?

Thank you so much!

Fission is a venture funded deep tech startup that is building core protocols like ucan, wnfs, and ipvm, with a few more in the pipeline like a distributed database.

Our current core revenue generator is native token grants from the ecosystems we work with, where a rise in those token values over time, lead to upside for Fission.

An example of this is Figment getting a grant from The Graph.

We’ll have some announcements to make about FIL funding soon.

We don’t currently charge nor highly promote our Fission publishing system, which also provides persistence for the #developers:webnative-sdk https://webnative.dev

We will build out an identity, data and compute stack over time, and Webnative will have paid hosting around encrypted data, database, and WebAssembly based computation, a bit like Cloudflare Workers or Amazon Lambda.

The SDK is open source. It is very edge / front end focused. The developer creates DIDs for users in browser, or consumes an Ethereum or other blockchain key.

Right now, we create usernames for users and store the root of their file system – across devices – in DNS. e.g. boris.files.fission.name

DNSLink entry which stores the current hash of my root WNFS files: _dnslink.boris.files.fission.name DNS records ~ dnsrecords.io

Same thing, but the IPNS version and served up through the Fission gateway, so you can see the public and private root of the file system, or browse the "p"retty version of public files without versioning or other WNFS features: /ipns/boris.files.fission.name/

TODO: this needs a diagram and should be a FAQ entry :slight_smile:

So: we automate DNS updates, and we store the latest file system root CID, and we persist the IPFS data and serve it up through our gateway currently.

The Fission server which provides this, is also open source: https://github.com/fission-codes/fission – so you can run this yourself. In fact, we want larger organizations to be running their own, and federating in interoperable ways.

You would run your own IPFS server and we’d work with you to accept patches to the Webnative SDK so anyone can bring their own storage.

We’re planning on support Web3.Storage in Q1 as they UCAN enable their service.

We’re rewriting to and switching to Rust/Wasm for all the core protocols we work with, which should work in browser, in React Native and/or PWAs, and in native mobile and desktop.

We’re also moving towards CAR files[1] over https and perhaps some streaming protocols for performance and consistency in browsers, and for performance and battery life on mobile.

TODO: also a diagram of js-ipfs in browser connecting over wss:// to the Fission IPFS server.

The current DIDs in Webnative are either based on the browser [[WebCrypto API]] or on the experimental walletauth https://fission.codes/walletauth that works with Ethereum today.

The core of Webnative relies on DIDs – and there are a number of different ways to create DIDs. Creating from an email address is hard. The Web3.Storage team and the UCAN community in general are working on other account systems, including Passkeys[^passkey]


  1. Content-addressed archive (CAR) – a bundle of IPFS compatible files https://car.ipfs.io/ ↩︎