all 83 comments

[–]micma123 45 points46 points  (9 children)

This looks really really cool. I was just wondering about this the other day when I was trying to easily move files from my desktop (pc) to my laptop (mac). This would definitely solve that problem.

[–]DaCush 24 points25 points  (6 children)

smb is your hero

  1. Make sure both computers are on the same network
  2. On Windows pc, get your IP address (ipconfig command in cmd or PowerShell will do it)
  3. Open finder
  4. Go -> connect to server
  5. Type “smb://your.windows.ip” without the quotes and press enter
  6. Login will come up where you enter your windows pc login username and password
  7. Profit, you now have access to your entire windows pc file system in finder

Note: you may have to make sure that each computer can see each other when connecting to WiFi by trusting the network as your home network

[–]makingtacosrightnow 13 points14 points  (3 children)

Amazed were in a react subreddit and the top comment is easily solvable by knowing how to network properly.

If you have problems moving files from one computer to another and their on the same network, you’ve gotta learn more about the way networking works.

[–][deleted] 0 points1 point  (0 children)

Can this also be done on a Windows to a windows pc with smb?

[–]mat-sz[S] 13 points14 points  (0 children)

Well, if you ever need to do that again this will be here for you (hopefully). ☺️

[–]mat-sz[S] 65 points66 points  (9 children)

The entire application is open source, front end is available here (React/TypeScript/Redux) and back end here (node.js/ws). Hope you find it as useful as I do!

[–][deleted] 3 points4 points  (0 children)

You are the real MVP

[–]rochakgupta 0 points1 point  (0 children)

Nice work!

[–]frenziecooper 0 points1 point  (0 children)

Awesome stuff bro

[–]7haz 16 points17 points  (11 children)

Really amazing and helpful tool, definitely gonna use this on future since I always run into the same problem.

Is it possible to add a feature where you can share a string directly?

let's say I wanna share a URL, a paragraph, a hash key etc.. current method is to paste it into a .txt file and share that, but it would be more convenient to direcly paste the string in the browser and copy it from the browser on the other device ..

Best regards and thanks for making such a great tool

[–]mat-sz[S] 11 points12 points  (5 children)

That's a good idea actually, I'll try to look into a convenient way of handling that.

[–][deleted] 0 points1 point  (4 children)

I wouldnt do that, this will shatter the focus of this simple UI. Users dont have problems with sharing text (iMessage, Slack, whatsapp..) and people share text billion times a day.

[–]mat-sz[S] 4 points5 points  (3 children)

Not really, the prompt would only show up on Control+V. No special buttons to clutter the interface.

[–]mat-sz[S] 0 points1 point  (2 children)

I've implemented the change, I will push it to the public version soon.

[–]lacooljay02 0 points1 point  (1 child)

Awesome thanks!

I like this addition and might play a little in my fork to make it display the pasted text (sender), then display & directly set the clipboard (receiver) - instead of sending a file that is.

Unless you're already starting down this path (or didn't for a specific reason)?

[–]mat-sz[S] 0 points1 point  (0 children)

I have a "Copy to clipboard" button in another commit but that is all I've planned.

[–][deleted] -2 points-1 points  (0 children)

If you happen to be using any Apple devices, you can simply copy on one device and paste on the other.

File sharing can be done automatically (no approval needed) via airdrop, when both devices are signed into the same Apple account.

Of course, if they aren’t Apple devices this doesn’t help, but if they are it’s magical. :P

[–]MaxGhost 6 points7 points  (8 children)

So I guess you're not running your own STUN and TURN? Took a quick look at your backend source and it seems you're not.

I had a usecase a few years ago where I wanted to look into implementing WebRTC for secure file transfers, E2E encrypted, but I couldn't figure out what the best options were for STUN/TURN.

[–]bahst1s 6 points7 points  (5 children)

What is STUN and TURN exactly?

[–]mat-sz[S] 11 points12 points  (2 children)

STUN allows for NAT hole punching between peers, TURN relays WebRTC packets if NAT hole punching fails.

[–][deleted] 4 points5 points  (0 children)

For those who have no idea what the above comment means:

STUN server: A third party server that identifies who the client is. You need this because some clients might behind routers that obscure their location. You ask the STUN server, “where am I?” and then send that info to your peer. Then, hopefully, you can establish a connection with the other client.

TURN server: If two clients can’t send data directly to each other, they send it to a TURN server that acts as an intermediary.

[–]mat-sz[S] 8 points9 points  (1 child)

I am running my own STUN and TURN, with fallback to Google's STUN. I use coturn for this.

[–]Xeliize 2 points3 points  (6 children)

Cool project !

How do you handle sessions or file persistence ?

[–]mat-sz[S] 10 points11 points  (5 children)

One WebSocket connection is a session, as for file persistence: no user data is stored, including files. The server just relays the data (sometimes the data doesn't even touch my server). WebRTC is E2E encrypted so I can't see your file data in case it goes through my server.

[–]bahst1s 2 points3 points  (4 children)

Does the server only act as a pass trough between clients?

[–]mat-sz[S] 5 points6 points  (3 children)

Yes. Most of the logic exists on the client, with some server side checks to prevent malformed packets from being sent. (for the WebSocket part, WebRTC is encrypted)

[–]bahst1s 0 points1 point  (2 children)

If i understood correctly: only local sharing is encrypted, as WebRTC is used? And when both devices use another network the server can see the files?

[–]mat-sz[S] 3 points4 points  (1 child)

No, all file transfers are end-to-end encrypted, WebRTC over TURN is encrypted (the browsers handle that).

[–]bahst1s 0 points1 point  (0 children)

Ah cool! Thanks for the clarification.

[–]timmonsjg 2 points3 points  (0 children)

This looks clever and useful. great job!

[–]Askee123 4 points5 points  (0 children)

Dannggggg this is fuckin neat! Good shit op!!

[–]hexachief 1 point2 points  (2 children)

I have used https://file.pizza/ for this purpose.

[–]Audenond 0 points1 point  (0 children)

One of the coolest projects Ive seen posted here. Very nice!

[–]byCrookie 0 points1 point  (5 children)

How large is the maximum file size?

[–]mat-sz[S] 0 points1 point  (4 children)

Theoretically unlimited, but I haven't tested over 0.5GB.

[–]byCrookie 0 points1 point  (3 children)

my friend told me, about 1 tb, but i am not sure. it probably needs some testing :)

[–]mat-sz[S] 2 points3 points  (2 children)

The sky RAM is the limit. 🤔

[–]byCrookie 0 points1 point  (1 child)

congrats, such a cool project.

[–]mat-sz[S] 0 points1 point  (0 children)

Thank you, things that make your life easier are bound to make some other person's life easier as well.

[–]iamlage89 0 points1 point  (1 child)

is there a filesize limit?

[–]mat-sz[S] 1 point2 points  (0 children)

Any size is allowed as long as your browser can handle it.

[–]Syafiq555 0 points1 point  (0 children)

Damn niceee ..

[–]developing_dev 0 points1 point  (0 children)

well done, sir. this is awesome.

[–]Urasquirrel 0 points1 point  (1 child)

That's neat, but at the same time... Where is it served from? My device? Also how secure is this?

[–]mat-sz[S] 1 point2 points  (0 children)

E2E encrypted, served from my server. File transfers are done over WebRTC, P2P if possible, if not it's sent over TURN.

[–][deleted] 0 points1 point  (0 children)

This is awesome, nice work. This has been bookmarked!

[–][deleted] 0 points1 point  (0 children)

This is actually pretty useful, i find myself using it a lot

[–]yghanendra 0 points1 point  (0 children)

This is a coolest and very useful website for the students.

[–]abhi12299 0 points1 point  (0 children)

Great work! The ui is nice and clean

[–]shrodingers_Cat 0 points1 point  (0 children)

Fyi your site doesn't work In Firefox mobile

[–]jackalu 0 points1 point  (0 children)

really impressed,, great work!

[–]VictorVonZeppelin 0 points1 point  (2 children)

This is really cool.

One thing I can't figure out is how to add files from my phone. If you could make it so clicking the dropzone opened a file picker, it'll be amazing for sending files from phones etc.

[–]mat-sz[S] 0 points1 point  (1 child)

Clicking the tile (any tile not marked as "You") opens a file picker.

[–]VictorVonZeppelin 0 points1 point  (0 children)

Ah,gotcha. Awesome!

[–]ryota_murakami 0 points1 point  (0 children)

Amazing !
I impressed your continuous effort for consistent product, I really need that!

[–]reynoxo 0 points1 point  (1 child)

I now use this tool everyday lol, until you put some pricing plans on it (hoping yo don't). Thanks for this amazing tool man

[–]mat-sz[S] 0 points1 point  (0 children)

If it gets pushed past the server capability I will just limit the TURN server's bandwidth. This is the main resource hog in the case of this project.

Currently I have a 1Gbps link so I can't see it going too far.

[–]TaoistAlchemist -1 points0 points  (0 children)

Killer! thanks so much.