# Durin
###### tags: `durin` `mobile` `ios` `ipfs`
App Store URL: https://apps.apple.com/us/app/durin/id1613391995
TestFlight URL: https://testflight.apple.com/join/GY08lwLf
Github Repo: https://github.com/ipfs-shipyard/Durin
Design: https://www.figma.com/file/TL1T4zNGe88YJNgfNrV5tp/Durin?node-id=11%3A46
## V2 Notes 4/24/2023
After returning from IPFS Thing, we have some ideas to choose from for next features.
These need to be explored and architected before making the decision, there will be a document linked for each idea that goes more in depth.
- Light Client for interacting with trustless gateways, written in HeliaJS
- Sending files as blocks over Share Nearby / Airdrop, so they can be verified on the other side
- integration of wnfs and UCANS with odd.dev (from fission), this work would more than likely happen with Hugo
- IROH integration
- NABU integration https://github.com/Peergos/nabu
## MVP TODO
Aim to announce with blogpost before December 20.
- ~~Chore: write blogpost (1 hour)~~ [Dave]
- ~~Chore: Set up feedback mechanism (4 hours) [Dave]~~
- ~~Public slack channel, github issue template link~~
- Chore: [add feedback link in settings page](https://github.com/ipfs-shipyard/Durin/issues/3)
- ~~Chore: fixup README for public consumption (1 hour)~~ [Dave]
- Chore: document process for publishing to app stores (1 hour) [Dave]
- investigate what can be automated
- ~~Bug: link handling on android generating broken url~~ (1 hour) [Trigram/Eric]
- ~~Bug: link handling on android with intents (4 hours)~~ [Trigram/Eric]
## V1 TODO
- Feature: Allow app to be a [share target](https://github.com/marwonline/capacitor-share-target) (8 hours) [Trigram/Eric]
- ~~Bug: When ipfs:// link from QRcode is opened on ios "no usable data is found" message is displayed (2 hours)~~[Dave]
- ~~Feature: Design and UI/UX pass, create visual assets (16 hours)~~[Trigram/Adam]
- ~~Feature: Settings page (8 hours)~~[Trigram/Adam]
- ~~show nodes and speeds (add icons for node type local/remote)~~
- ~~checkbox next to a specific gateway to force it to use that one~~
- ~~"only use local gateways" option~~
- ~~Feature: Add mimetype to uploader to allow audio recording option on iOS (1 hour)~~[Trigram/Adam]
- ~~Feature: Generate QR code for sharing (show in upload success state) (2 hours)~~ [Trigram/Adam]
## Known Limitations
- Mobile Chrome (iOS + Android): Typing ipfs:// (or any non-http protocol) into the address bar will kick you to Google
- Local Node: Local nodes do not have intranet accessible gateways enabled by default
~~- send PR to go-ipfs to default the Gateway to /ip4/0.0.0.0/tcp/8080~~
This is a no-go https://filecoinproject.slack.com/archives/C02EQ3ELFBQ/p1659460752938759
## Peer to Peer sharing
### Phase 1:
:warning: __NOTES FROM SLACK, NEED TO REVIEW__ :warning:
* User can “Archive” a CID when viewing it
* User can view a list of CIDs they have archived
* User can delete a CID from their archive
* User can airdrop a CID from their archive to another person, if they have Durin or not. Users with Durin are known as “Receiver”.
* Receiver can be notified of files via airdrop, and accept or decline
* Receiver who accepts a file via airdrop will have its CID validated and placed into their Archive page
* Receiver who accepts a file over a size threshold (100mb?) where validation is costly will be prompted to optionally manually verify the contents
cid validation:
* convert file to [car file](https://github.com/web3-storage/ipfs-car)
* send over airdrop ("nearby share" on android)
* receiver unpacks car file and validates cid
### Phase 2:
* BLE
* Requesting files
* Support a public file directory, viewable to peers
## Future Ideas
- Feature: Add iroh gateway [example](http://g1.n0.computer:9050/ipfs/bafybeiasqzewvgyqjzy2kcagyn6q5ssqr2lzqf4qlxht55nfji5sgoy4wy/31F1C6E0-6116-4101-A560-6848F65FBD75.jpeg) [Iroh](https://github.com/n0-computer/iroh) is the rust implementation of [kubo](https://github.com/ipfs/kubo).
- Feature: Ability to use your own token to upload files
- Feature: Show previous browsing history on browse page (with remove and share option on swipe)
- a new history page might be warranted here
- Feature: Implement in-app browser as the default
- Add a toggle to settings page to use system browser
- Feature: Automatically back up photos/files to IPFS
- Feature: Encrypted file sharing (put a password on it, or use a wallet signing key)
- RND: Use proximity APIs
- RND: Integrate with glif - is this useful?
- yes, worth articulating some use-cases
- Publish a JS module that exposes the useful features
- Publish app template that uses capacitor and IPFS
- Feature: Generate QR code for sharing (show qr code in slider and in upload sheet)
- maybe we can have certain qr code links open automatically in durin
## Extra
* in case helpful, here's the language from the ffmpeg integration - things like error strings, etc. https://hackmd.io/qy9PQyiJQSq8n7xHOlgAFw
## Open Questions
- Contra, can you make a note of exactly what happens with chrome mobile not handling protocol handlers? I want to make an issue/comment. The only existing issue is specific to android https://bugs.chromium.org/p/chromium/issues/detail?id=178097&q=protocol%20handler%20mobile&can=2