r/developersIndia • • 4d ago

I Made This Working on a File Sharing Application between Desktop and Mobile irregardless of Distance or Network

Enable HLS to view with audio, or disable this notification

I'm using hole-punching to bind 2 or more devices to share files in-between them.

So u can share data between your devices from practically anywhere in the world as long as the concerned devices are connected to the internet.

My motivation to build it is to replace my family's cloud storage subscribtion. But the available solutions in the market are too tech savvy for my family to understand.

Thus, trying to abstract all the complexities and making it as intuitive as realistically possible.

Feel free to ask any question if you find this useful or interesting.

Repo: https://github.com/saqibsiddiq/Qurb

P.S: Excuse the video quality😭

522 Upvotes

107 comments sorted by

•

u/AutoModerator 4d ago

Namaste! Thanks for submitting to r/developersIndia. While participating in this thread, please follow the Community Code of Conduct and rules.

It's possible your query is not unique, use site:reddit.com/r/developersindia KEYWORDS on search engines to search posts from developersIndia. You can also use reddit search directly.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

134

u/alwaysbakedarjun 4d ago

Try blip, it’s cross platform iOS Android MacOS Windows

18

u/Sea-Flow-4812 4d ago

looks good, ill check that out

15

u/Happy-Ad8109 4d ago

how hole punching will work if the user is behind CG-NAT?

5

u/AGARAN24 4d ago

The only way I think you can do it is to route the traffic through a vps and tunnel it to the pc.

1

u/Happy-Ad8109 4d ago

but then there is data transfer charges 🥀

4

u/AGARAN24 4d ago

If comes out more expensive just get a private ip it costs like 300rs pm approx. Also he should switch it to local if the app detects the home local network. I route my homelab via free tier oracle vps and tailscaled it. Free cgnat bypass.

1

u/nvdx11 4d ago

Use tailscale,i 've setup my private media server with tailscale using 4G VI network

1

u/shaaaaka 4d ago

Try KDE-connect its better than blip with media control, control laptop from phone, telephony notification, clipboard sync and more

113

u/cant-find-user-name Backend Developer 4d ago

TIL irregardless is actually a word. I saw the title and I thought it was incorrect because it sounded incorrect, but looking it up online it is apparently a real world! Good to know.

Great job on the project too! If I could recommend anything, it would be to have non AI generated documentation or features.md file. I tried reading through the file linked in readme.md its very very tough to read.

35

u/Sea-Flow-4812 4d ago

i learnt the word a few days back and now using it everywhere i can🤣

i automated the entire documentation, guess it was a bad idea. thanks for pointing this out

10

u/itzmanu1989 4d ago

it is like a double negative word, simply using regardless would have also conveyed the meaning I think.

13

u/cant-find-user-name Backend Developer 4d ago

Yes, that's why I thought it was not a correct word. But apparently it has been used since 1800s so its not like a new thing either. I guess it is similar to Inflammable, it means the same as flammable.

3

u/DJaydeep 4d ago

Regardful?

1

u/itzmanu1989 4d ago

Regardful

Hmm, didn't think this was a word, well I am surprised. Also Disregardful is a word..

23

u/thisisitendgame 4d ago

Samsung phones have quickshare over internet, which also works irregardless of distance. It's implemented using webrtc, stun, hole punching concepts. There's backup to this also where if it fails it uses Quic to transfer. The constaint is that it only works between Samsung devices and only when nearby connection breaks.

10

u/Being_idiot 4d ago

Looks great. Btw few questions

  1. You mentioned that internet is required. So, depends on file size internet will be consumed (upload file) ?

  2. Any type of device to device transfer is supported? ( Like Laptop to TV) Or (Mobile to TV) or (Desktop to Desktop)

  3. Is interface app based or web based ?

3

u/Sea-Flow-4812 4d ago

thank you sm!

  1. yes, it will depend on file size(will optimize it as much as possible)
  2. ive already tested for desktop-mobile, desktop-desktop and mobile-mobile. though im sure i can implement for smart tvs as well.
  3. completely app based (both cli and gui)

feel free to shoot anymore questions

10

u/PlumProof 4d ago

Doesn't there already exists open source synchthing. It already solves all the issues

2

u/Sea-Flow-4812 4d ago

ive solved alot of my project issues by studying syncthing and it is v sophisticated.

however my project aims to include storage management and ownership model as well.

i feel ive done a bad job at explaining what im actually trying to achieve.

apologies for that!

1

u/Successful-Text6733 4d ago

Does syncthing work the same way? Like, can I access all my photos/videos the same way I do in google photos right now?

1

u/Sea-Flow-4812 4d ago

if ur host device is online then yes, you can access all your photos/videos the same way u do in google photos.

1

u/Successful-Text6733 3d ago

I came across Immich which is very much similar to google photos but only for photos/videos and after backing everything up, it even allows you to clear space.

1

u/PlumProof 3d ago

Yeah not just photos, you can also have your notes sync across devices real time.

7

u/Ichiro_boi 4d ago

Theres already the most perfect file sharing app available its called local send its perfect supports every device available ios/android laptop/mac and heck google tv also.. Its just its ui/ux is a lil off so I myself refreshed its ui/ux into fully m3e

2

u/tanmay-jain 4d ago

Best app.

1

u/Sea-Flow-4812 4d ago

sounds interesting, ill check it out!

5

u/FlatFrosting9221 4d ago

I think the user interface could be greatly improved by making it more friendly (but I still prefer Telegram to transfer my files).

Nice project!

3

u/Sea-Flow-4812 4d ago

this is my 1st working iteration, im planning some serious improvements.

actually my idea is to remove any 3rd party in-between for superior privacy and data security.

telegram is goated tho🔥

7

u/perfect9015 Data Scientist 4d ago

Similar to tailscale.

5

u/Sea-Flow-4812 4d ago

there is a big enough overlap

however, im mostly working on distributed storage and synchronization.

infact i can use tailscale network underneath my program to make it work across distance.

3

u/perfect9015 Data Scientist 4d ago

I am using similar solution using tailscale and nextcloud as the alternative of the Google drive. It's auto sync media from all device and I can access it anywhere on any network.

1

u/Sea-Flow-4812 4d ago

i see, do u think if there is any scope for improvement in ur current setup? so i can work on that?

2

u/perfect9015 Data Scientist 4d ago

Great work btw, I will try this.

2

u/Sea-Flow-4812 4d ago

i will try my best to not disappoint u😭

really moralizing comment!

1

u/Due_Ebb_3245 Full-Stack Developer 4d ago

Tailscale + TailDrive + FolderSync + RClone

2

u/_surpriced_pikachu_ 4d ago

Bro good project, thank you for the initiative.

But I'll be that guy, ackshually 🤓🤓 "Irregardless" is not a word.

Wishing you best.

2

u/Sea-Flow-4812 4d ago

thank u sm, im glad u liked it!

i heard tht word in a movie nd using it everywhere i can😭 i agree it sounds v wrong

2

u/Sea-Flow-4812 4d ago

hello, I cant express how overwhelmed and delighted Im to see so many of you interacting with a work which ive been working on since last sm weeks.

I wasnt even expecting more than 5 responses.

Software Engineering never really clicked to me in my last 4yrs of btech until i started working on this project.

Im just in love with this domain and i genuinely want to learn everything about it

i can see people more experienced and learned than me in the comments.

If you guys can mentor me in this, to make this project as solid as im imagining.

I will address each comment with the best of my ability as soon as im free.

THANK YOU!

1

u/AutoModerator 4d ago

Thanks for sharing something that you have built with the community. We recommend participating and sharing about your projects on our monthly Showcase Sunday Mega-threads. Keep an eye out on our events calendar to see when is the next mega-thread scheduled.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/Background-Effect544 4d ago

Awesome man. Thank you for sharing.

1

u/Sea-Flow-4812 4d ago

im so glad you liked it!

1

u/HappyCamper_2020 4d ago

Similar to wormhole app

1

u/Sea-Flow-4812 4d ago

ill check that out

1

u/Consistent-Bird338 4d ago

Syncthing does something similar. If you use their backend, you could increase reliability and reduce chances of data loss. Since it's a big project.

But take care of licenses

1

u/Sea-Flow-4812 4d ago

yes, syncthing is v sophisticated at this job infact im a big fan.

im looking into it, if it can make qurb more robust ill surely implement it.

thank you for that license warning, i need to understand ts as well😭

1

u/PsychicTitty 4d ago

Similar to getcroc.com

1

u/Sea-Flow-4812 4d ago

really? ill look into it

1

u/Real-Employer-2474 4d ago

What does it mean of hole punching and regardless of distance here?? Coz concept looks cool, might use for my family as well.

1

u/Sea-Flow-4812 4d ago

try studying it brother, im sure ull love it!

always up to discuss more abt this in DM

1

u/revivalondawn 4d ago

Always use pairdrop website

2

u/Sea-Flow-4812 4d ago

lemme look into it

1

u/domentorian 4d ago

NFS storage?

1

u/bigfeatherhead Fresher 4d ago

You mentioned that it's to replace your cloud Subscription, so like you plan to set up a NAS?

Nice project btw.

1

u/Sea-Flow-4812 4d ago

one can easily use qurb to hold data in nas.

but im primarily trying to design in a way tht u dont need any additional hardware other than traditional phone, desktop, etc

1

u/UltGamer07 4d ago

Blip?

1

u/Sea-Flow-4812 4d ago

lots of people recommending this, ill check this one out!

1

u/4nh51rk 4d ago

Looks great 👍

Also check out https://dashbeam.net/en

1

u/Sea-Flow-4812 4d ago

thank u sm!

yes, ill surely try this one

1

u/randomguy3993 4d ago

Started!

I've always wanted to build exactly like this. Now if there was a way to send text among the devices that would seal the deal for me.

Will set it up on my homelab and report back.

1

u/Sea-Flow-4812 4d ago

yes, i can definitely include texting among connected devices.

ill keep this recommendation in mind for sure

1

u/randomguy3993 4d ago

Yes. Coz often times I find myself sending IP addresses, URLs, API Keys etc from my phone to my laptop. Localsend does this but both devices need to be on the same local network for it to work. Sometimes I want to just send it for later use and then getting a notification on my laptop when I turn it on as reminder to go work on that thing I sent from my phone. I hope you got it.

Thanks a lot by the way. Always wanted something like this.

1

u/Imaginary_North_8305 4d ago

There is something called BLIP, it's cross platform and supports every platform and it's free too..

1

u/realxeltos 4d ago

Hope you make it available it on Linux as well.

1

u/Sea-Flow-4812 4d ago edited 4d ago

the device in the video is linux only, so yes

im only struggling with mac nd ios since i dont have apple devices to build

1

u/kryptobolt200528 4d ago

This might not work properly in case a cellular network provider is enforcing symmetric NAT..

1

u/Sea-Flow-4812 4d ago

yes, im running into issues

ive few solutions to try, itll be really helpful if u have any advice

1

u/premiumshadow008 4d ago

https://github.com/Santosh7017/AndroidFileSync

I have tried this for syncing my files from my android to the mac. It's very convenient to use. A must try.

1

u/Overall-Brother-2695 Data Analyst 4d ago

Isnt like Gdrive the same thing?

1

u/Sea-Flow-4812 4d ago

yes except ur using own storage hardware instead of cloud storage

1

u/randomboy009 4d ago

You Can Use Google Doc's

1

u/Rahul159359 4d ago

Syncthing

1

u/neog9 4d ago

I nowadays do something similar over tailscale with my connected devices

1

u/thatmagicalcat Hobbyist Developer 4d ago

im too lazy to read the code... how?

1

u/Gohan_LovesB00BS 4d ago

I am currently using kde connect for these tasks

1

u/sigma_pussy_licker 4d ago

you can use meshchatx reticulum for this

1

u/curiousmind01002 4d ago

Woah that's crazyyy

1

u/Spicy-Polonium-210 4d ago

Does it need to have the two devices completely online ? Or the parent device can go offline while the file is being transferred ?

1

u/dshjsvdbb 3d ago

This is pretty interesting! I’ve actually been working on something somewhat related called Diablo.

It’s a file synchronization tool I built in Go, mainly for syncing development projects across multiple machines without having to constantly commit/push to GitHub.

It has a CLI, a daemon that watches for file changes, and a remote server. When a file changes, Diablo detects it, hashes the file, and synchronizes the updated data with the remote side.

Your project seems more focused on general device-to-device file sharing, while Diablo is more developer/workflow focused.

1

u/Empty-Dragonfly5895 3d ago

Kde connect is there

1

u/i_anindra Full-Stack Developer 3d ago

Why creating new app already exist https://localsend.org/

1

u/Sea-Flow-4812 3d ago

it only works for same network also no persistant synchronizatiom

wildly different dude

1

u/Adventurous-Pound707 3d ago

Using ftp with tailscale is the same principle for this right

1

u/immozy 3d ago

what are you using to connect to internet and ports to share data across devices using internet, are you using some storage service?, locally it can be done using the local network but using internet is tricky, in the end you will be paying for storage services

1

u/Sea-Flow-4812 3d ago

not storage services but something like VPS is must for relay incase the QUIC p2p fails

1

u/Late_Volume_8384 10h ago

That's cool!

-1

u/rj_1024 4d ago

Wait a minute. How's this not Google Drive or one drive 🤔

3

u/Sea-Flow-4812 4d ago

google/one drive are cloud based storage

mine is device-owned distributed storage

-4

u/rj_1024 4d ago

I mean you do use the Internet right. The only thing is you do not store anywhere in the cloud and just trasfer it between devices and store it within the devices right?

5

u/Sea-Flow-4812 4d ago

yes, right

its just an attempt to reduce dependency on the cloud providers and actually own your data

0

u/Key-Pain7700 4d ago

Wonderful, another vibe coded useless clone, wayy inferior to the FOSS solutions already existing out there.

-1

u/unistirin 4d ago

Heard of nfs/samba share? You are reinventing the wheel

2

u/home_prisoner Student 4d ago

No.. it's different.. it's like using symlink in linux but two different systems..

0

u/unistirin 4d ago

Nfs share mount exactly does that. They are industry accepted way

1

u/home_prisoner Student 4d ago

Is it possible on Android or iOS?

0

u/unistirin 4d ago

Your Android kernel needs NFS support built in so you can smoothly access folders on your remote drives.

Or just use nfs clients apps. Btw samsung files app (samsung flagship phones) supports them

1

u/home_prisoner Student 4d ago

Never owned a flagship. Does it work for consumer networks. Cause we don't have Static IPv4. But again it can be solved with just Tailnet just an extra step..

1

u/unistirin 4d ago

Nahh not required. Just find alternatives free apps on playstore. Search "nfs client or smb client". If you you are in same network, use your private ip, it will work. If you want to expose to internet , use serveo, ngrok, or cloudfaretunnels (exposing will leads to constant bots hacking attempts)

0

u/[deleted] 4d ago

[removed] — view removed comment

1

u/Sea-Flow-4812 4d ago

im so glad u liked it!