PWA with handlers for ipfs:// and ipns://
This is something we could explore when more pressing things are implemented, after we deploy service worker gateway under long-term domain name.
When packaged as PWA, SW gateway root could double as a very nice light mobile client. If we create a compelling landing page that could double as a mobile app, we would be bringing light IPFS node with built-in verifiable ipfs:// and ipns:// URL support to mobile users (android etc) virtually for free.
Background
It is possible to create a Progressive Web App (PWA) with a manifest file that declares the app as a handler for specific protocols or URLs. This allows PWAs to provide handler of certain URLs or protocols.
The user experience is pretty good on mobile platforms, especially Android, where PWA support is built into the operating system.
Implementation notes and caveats
- Assuming we have subdomain service worker gateway at
example.com - Requesting main domain would return HTML with
<link rel="manifest" href="/manifest.json">and there would be PWA manifest atexample.com/manifest.json -
manifest.jsonwould haveurl_handlerssection which defines two handlers that implementurirouter from subdomain spec:-
ipfs:→/ipfs/?uri=%s→ decodeipfs://URL, redirect to proper subdomain -
ipns:→/ipns/?uri=%s→ decodeipns://URL, redirect to proper subdomain - note: we may be able to use
#urihere to avoid sending request to http server, and doing URI decoding and redirect viawindow.location.replace - note:
%sis percent-encoded URL with custom scheme likeipfs://cid/optional/pathmaking the URL looks like this:?uri=ipfs%3A%2F%2FQmYizgL5Gn6zZFK8n5thwULT4q12P5yVAT1V4xuicp8226%2Ffavicon-32x32.png
-
Mostly done in https://github.com/ipfs/service-worker-gateway/pull/310, remaining work here here is to add protocol handlers to manifest:
- https://developer.mozilla.org/en-US/docs/Web/Manifest/protocol_handlers
It should use the same handler as one described in
- https://github.com/ipfs/service-worker-gateway/issues/214#issuecomment-2102963620