GoShare is a simple file sharing app for local Wi-Fi networks. It discovers nearby devices automatically and lets you send files directly between them without uploading anything to the cloud.
- Discover online devices on the same local network
- Send one or more files to a selected device
- Receive incoming transfers with accept or reject controls
- Pause, resume, or cancel outgoing transfers
- Track transfer progress and recent history
- Preview image files before sending
- Save incoming files into a local received folder
GoShare uses UDP broadcast for device discovery and TCP for file transfer.
- UDP discovery port:
9999 - TCP transfer port:
9000
Each app instance advertises itself on the local network, detects other GoShare devices, and keeps the device list updated while they are online.
- Windows or Linux
- Go 1.22 or later
- A local Wi-Fi network shared by the sender and receiver
- On Linux, install the desktop dependencies required by Wails and WebKitGTK
From the project root, run:
go run -tags dev .The app will open a desktop window and start discovering devices on the network.
To build for Windows, run:
go build -tags production -ldflags="-s -w -H=windowsgui" -o GoShare.exe .To build for Linux, run:
go build -tags production -o GoShareIf you are building on Linux for the first time, make sure the system packages required by Wails are installed before running the build.
Incoming files are saved into a received folder next to the executable. If the executable location cannot be resolved, GoShare falls back to a local received folder in the current directory.
app.go- application lifecycle, discovery, transfer, and app APIsmain.go- Wails entry point and window configurationapp/connection- network connection managementapp/discovery- device discovery serviceapp/transfer- file transfer manager and protocol handlingapp/models- shared data modelsapp/utils- checksum and network helpersfrontend/dist- bundled frontend assets used by the desktop app
- The project uses Wails for the desktop shell.
- The frontend in this repository is shipped as a static bundle in
frontend/dist. - If you want to replace the UI later,
frontend/srcis available as a placeholder for a new source app.
- GoShare is designed for trusted local networks only.
- Only accept transfers from devices you recognize.
- File discovery and transfer happen over the LAN, not through a cloud service.
- If you use it on a shared network, make sure the network is secured and the devices are trusted.
This project is licensed under the MIT License. See LICENSE for the full text.

