Filesharing Project with IPFS

I everyone,

I’m working on an app to share files between some user. Actually, I use Syncthing who meet some of my needs, but I have to made a lot of tweak to make it works well, I recently discover IPFS who likely more look like what I need (I use REST API for everything):

  1. Can download an entire folder
  2. Can be advertized when an update in a folder have been made
  3. Every user can share file only if they are identically from the source

If I understand well, first point is difficult to execute? I understand how to download a file, but note a folder, or do I have to get the list of all folder and subfolder, create them then download all file who are inside each folder?

The second point look to be not possible, so I will use a file with the list of all folder ready to download with a “version” to compare with the version who the uder already have, if the user have one, and let user download the new version. Syncthing let user know what file have been change and let user to only download modified file, it is possible to do the same with IPFS?

Third point is not clear for me new, since I haven’t tested anything yet, just reading some documentation, reddit and forum topic, so, I have some question:

  • Do I have to only make a node who point to files/folders on the disk? Something else?
  • All user have to have the node in they adress to reach it quickly?
  • When a client have a file, can it become a uploader of this file?

My plan with IPFS is to make a JSON with the list of folder CID and an version, every minutes of so, clients download this file to get an update (new folders or news folder version). With an interface, the user can see all ready to download folder, download it and use it. I just want to be shure IPFS is better than Syncthing to doing that because Syncthing is mainly a backup tool that I hijack for my needs.

If you think IPFS don’t fit my needs either, have you an idea of a better solution? What I want to do is simple (everything in REST API):

A “Server” list some folder
“Client” reach this list and can download folder of it’s choise
Each “Client” can share folder if they already get it, like torrent way (the server have a limited bandwidth)
Clients can’t update files - if the client modify a file, because of a virus for exemple, this client cannot share this file anymore (and the folder appear has “outdated” for exemple)
“Client” have an up-to-date list of folder and know when an update have been done on the “server” files/folders
See the progression of the downloading

Thanks for the help and sorry for my approximate english :slight_smile: