|
1 |
| -# catch-my-file |
2 |
| -Send and Receive Files P2P |
| 1 | + |
| 2 | + |
| 3 | +# Catch My File |
| 4 | + |
| 5 | +Catch My File lets you easily send and receive files between the peers on the local network. |
| 6 | + |
| 7 | +## Why? |
| 8 | + |
| 9 | +I wanted a tool that allows to: |
| 10 | + |
| 11 | +- Share a files between peers without managing shared folders or file servers |
| 12 | +- Auto discover other peers without looking for IPs and/or ports to connect |
| 13 | +- Be indepemdent of the platform where it runs |
| 14 | +- No need for configuration or user accounts, just run and share |
| 15 | + |
| 16 | +## Features |
| 17 | + |
| 18 | +- Discover other peers on the local network without any configuration |
| 19 | +- Send specific files to specific peers |
| 20 | +- Accept or reject files sent by other peers |
| 21 | +- Checksum (SHA256) verification of the file when transfer is completed |
| 22 | +- Log display for relevant messages |
| 23 | + |
| 24 | +## Installation |
| 25 | + |
| 26 | +- Download the required package from the releases page |
| 27 | +- Extract the package and run the application |
| 28 | + |
| 29 | +## Usage |
| 30 | + |
| 31 | +### Peers Panel |
| 32 | + |
| 33 | +This panel will show all the other peers using the application on the local network. Pressing **Send File** we can select a file from the filesystem and send it to that peer. |
| 34 | + |
| 35 | + |
| 36 | + |
| 37 | +### Sender |
| 38 | + |
| 39 | +After the file is selected a checksum(SHA256) is generated and a file transfer request is sent to the target peer. |
| 40 | + |
| 41 | + |
| 42 | + |
| 43 | + |
| 44 | +### Sending Panel |
| 45 | + |
| 46 | +After the request is send a record is added to the Sending tab where we can follow the progress. |
| 47 | + |
| 48 | + |
| 49 | + |
| 50 | +### Receiver |
| 51 | + |
| 52 | +When a peer receives a request to accept a file, a modal is shown showing that information. |
| 53 | + |
| 54 | + |
| 55 | + |
| 56 | +### Receiving Panel |
| 57 | + |
| 58 | +After a request is received we can **Accept** or **Reject** it, if rejected nothing will be transferred. |
| 59 | + |
| 60 | + |
| 61 | + |
| 62 | +When accepted we select where on the filesystem the file will be stored and the transfer start. |
| 63 | + |
| 64 | + |
| 65 | + |
| 66 | +The sender can also see the progress. |
| 67 | + |
| 68 | + |
| 69 | + |
| 70 | + |
| 71 | +## Built With |
| 72 | +- [Go](https://go.dev/) |
| 73 | +- TCP Sockets - Data transfer between the peers |
| 74 | +- Go Modules |
| 75 | + - [Zeroconf](https://github.com/grandcat/zeroconf) - Service registration and discovery |
| 76 | + - [Fyne UI](https://fyne.io/) - Cross platform GUI inspired by Material Design |
| 77 | + |
| 78 | + |
| 79 | +## Development |
| 80 | + |
| 81 | +### Requirements |
| 82 | + |
| 83 | +- (Dev) Go >= 1.16 - https://golang.org/ |
| 84 | +- (Build) Fyne - https://github.com/fyne-io/fyne |
| 85 | +- (Release) Fyne-Cross - https://github.com/fyne-io/fyne-cross |
| 86 | + |
| 87 | +## License |
| 88 | + |
| 89 | +Distributed under the Elipse Public License. See [LICENSE](LICENSE) for more information. |
0 commit comments