MCPcopy Index your code
hub / github.com/fabiodcorreia/catch-my-file

github.com/fabiodcorreia/catch-my-file @1.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.0.0 ↗ · + Follow
155 symbols 587 edges 29 files 109 documented · 70%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

catch-my-file logo

Catch My File

Catch My File lets you easily send and receive files between peers on the local network.

Why?

I wanted a tool that allows to:

  • Share a files between peers without managing shared folders or file servers
  • Auto discover other peers without looking for IPs and/or ports to connect
  • Be indepemdent of the platform where it runs
  • No need for configuration or user accounts, just run and share

Features

  • Discover other peers on the local network without any configuration
  • Send specific files to specific peers
  • Accept or reject files sent by other peers
  • Follow the transfer progress
  • Checksum (SHA256) verification of the file when transfer is completed

Installation

  • Download the required package from the releases page
  • Extract the package and run the application
  • MacOS
    • Copy the application to the applications folder or just run it directly
    • On the frist run need to allow the app to run and make network connections
  • Linux
    • Run the command sudo make install to install the application
    • Run the command sudo make uninstall to remove the application
  • Windows
    • Just run the executable

Usage

Peers Panel

This panel will show all the other peers using the application on the local network. Pressing send button we can select a file from the filesystem and send it to that peer.

peers-view

Sender

After the file is selected a checksum(SHA256) is generated and a file transfer request is sent to the target peer.

prepar-for-sending

Transfers Panel

After the request is send a record is added to the Transfers tab where the sender can follow the progress.

At the same time on the receiver side a similar record is added with the options to Accept or Reject the transfer, if rejected nothing will be transferred.

receiver-view

When accepted we select where on the filesystem the file will be stored and the transfer start.

receiving

The sender can also see the progress.

sending

Once the transfer is completed on the sender side, the receiver will start the verification to insure the file integrity.

verifying

When the verification is completed with success the transfer will be completed.

completed

Built With

  • Go
  • TCP Sockets - Data transfer between the peers
  • Go Modules
  • Zeroconf - Service registration and discovery
  • Fyne UI - Cross platform GUI inspired by Material Design

Development

Requirements

  • (Dev) Go >= 1.16 - https://golang.org/
  • (Build) Fyne - https://github.com/fyne-io/fyne
  • (Release) Fyne-Cross - https://github.com/fyne-io/fyne-cross

License

Distributed under the Elipse Public License. See LICENSE for more information.

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Function 91
Method 41
Struct 13
FuncType 5
TypeAlias 4
Interface 1

Languages

Go100%

Modules by API surface

pkg/worker/worker.go12 symbols
pkg/transfer/view.go12 symbols
pkg/transfer/store.go11 symbols
pkg/transfer/transfer.go10 symbols
pkg/transfer/receiver.go10 symbols
pkg/transfer/view_test.go8 symbols
pkg/transfer/internal/protocol/protocol_test.go8 symbols
pkg/peer/view.go8 symbols
pkg/transfer/internal/protocol/protocol.go7 symbols
pkg/peer/store.go7 symbols
pkg/transfer/store_test.go6 symbols
pkg/file/file.go6 symbols

For agents

$ claude mcp add catch-my-file \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page