Fast, secure, and seamless local network file sharing — built for developers and content creators.
Share-Beam is a cross-platform Flutter application that lets you instantly share files, clipboard content, and data between any devices on the same local network — no internet connection, no cloud upload, no size limits.
- Overview
- Features
- Screenshots
- Tech Stack
- Getting Started
- How It Works
- Project Structure
- Dependencies
- Platform Support
- Contributing
- License
Share-Beam solves a real problem for developers, video editors, designers, and anyone who regularly moves files between a phone, laptop, or desktop: there is no fast, frictionless way to do it without a USB cable or a cloud service.
Share-Beam runs a lightweight HTTP server and WebSocket layer directly on the device. Any other device on the same Wi-Fi network can connect, browse, and transfer files instantly through a browser or the companion app — no account, no pairing ceremony, no waiting for uploads.
- Zero-Config Discovery — Uses mDNS/Bonjour (via
bonsoir) to auto-discover other Share-Beam instances on the network. No IP addresses to type. - File Transfer — Pick any file from the device and beam it across the network at LAN speeds.
- Clipboard Sync — Share clipboard text or images between devices in one tap.
- Built-in HTTP Server — The
shelf+shelf_routerstack serves files directly from the device; any browser on the network can download without installing anything. - WebSocket Support — Real-time communication channel for clipboard sync and transfer status updates.
- Cross-Platform — Runs on Android, iOS, Windows, macOS, Linux, and Web from a single codebase.
- No Internet Required — Everything stays on your local network. Nothing leaves your home or office.
- Gallery Save — Received images can be saved directly to the device gallery via
gal. - Persistent Preferences — Settings and preferences are stored locally with
shared_preferences.
| Layer | Technology |
|---|---|
| Framework | Flutter 3.x / Dart SDK ^3.4.4 |
| HTTP Server | shelf + shelf_router |
| WebSocket | shelf_web_socket + web_socket_channel |
| Network Discovery | bonsoir (mDNS/Bonjour) |
| File Picking | file_picker + file_selector |
| Clipboard | super_clipboard + pasteboard |
| State Management | provider |
| Storage | shared_preferences |
| Permissions | permission_handler |
| Device Info | device_info_plus |
| Gallery Save | gal |
| Sharing | share_plus |
Make sure you have the following installed:
- Flutter SDK — version 3.x or later
- Dart SDK ^3.4.4 (bundled with Flutter)
- Android Studio / Xcode (for mobile targets)
- A physical device or emulator connected to the same Wi-Fi network as the target device (for testing transfers)
Verify your Flutter environment:
flutter doctor- Clone the repository
git clone https://github.com/HaronKhalid/Share-Beam.git
cd Share-Beam- Install dependencies
flutter pub get- Generate launcher icons (optional)
dart run flutter_launcher_iconsAndroid
flutter run -d androidiOS
flutter run -d iosWindows
flutter run -d windowsLinux
flutter run -d linuxWeb (limited — local server features may not work in browser sandbox)
flutter run -d chromeRelease build (Android APK)
flutter build apk --release┌─────────────────────┐ Local Network (Wi-Fi) ┌─────────────────────┐
│ Device A │ │ Device B │
│ │ ① mDNS Discovery (bonsoir) │ │
│ Share-Beam │◄───────────────────────────────────────►│ Share-Beam / │
│ │ │ Any Browser │
│ shelf HTTP server │ ② HTTP file transfer │ │
│ :8080 │────────────────────────────────────────►│ │
│ │ │ │
│ WebSocket server │ ③ Real-time clipboard / status sync │ │
│ :8081 │◄───────────────────────────────────────►│ │
└─────────────────────┘ └─────────────────────┘
- Discovery — On launch, Share-Beam advertises itself over mDNS so other devices on the network can find it automatically.
- Server — A
shelfHTTP server starts on a local port and serves files selected by the user. - Transfer — The receiving device hits the served URL, and the file streams over LAN at full network speed.
- Real-time sync — A WebSocket connection keeps clipboard content and transfer status in sync between paired devices.
Share-Beam/
├── lib/ # Dart source code
│ └── ... # App screens, services, providers
├── android/ # Android-specific native code & config
├── ios/ # iOS-specific native code & config
├── windows/ # Windows runner
├── linux/ # Linux runner
├── web/ # Web entry point
├── assets/
│ └── images/
│ └── logo.png # App logo / launcher icon
├── test/ # Unit and widget tests
├── .github/workflows/ # CI/CD pipelines
├── pubspec.yaml # Project dependencies & metadata
└── analysis_options.yaml # Dart linter configuration
| Package | Purpose |
|---|---|
shelf ^1.4.2 |
Lightweight HTTP server |
shelf_router ^1.1.4 |
Route handling for the HTTP server |
shelf_web_socket ^3.0.0 |
WebSocket support on the server |
web_socket_channel ^3.0.3 |
WebSocket client |
bonsoir ^6.1.0 |
mDNS/Bonjour network discovery |
file_picker ^8.1.0 |
Cross-platform file picking |
file_selector ^1.1.0 |
Desktop file selection |
super_clipboard ^0.9.1 |
Clipboard read/write |
pasteboard ^0.3.0 |
Extended clipboard support |
provider ^6.1.5 |
State management |
shared_preferences ^2.5.3 |
Persistent local storage |
path_provider ^2.1.5 |
Platform-specific file paths |
permission_handler ^12.0.1 |
Runtime permissions |
device_info_plus ^10.1.2 |
Device metadata |
share_plus ^12.0.2 |
Native share sheet |
gal ^2.3.2 |
Save media to gallery |
intl ^0.18.0 |
Internationalization |
cupertino_icons ^1.0.8 |
iOS-style icons |
| Package | Purpose |
|---|---|
flutter_lints ^4.0.0 |
Recommended lint rules |
flutter_launcher_icons ^0.13.1 |
Launcher icon generation |
flutter_test |
Widget and unit testing |
| Platform | Status |
|---|---|
| Android (API 21+) | Supported |
| iOS | Supported |
| Windows | Supported |
| Linux | Supported |
| macOS | In progress |
| Web | Partial (server features limited) |
Contributions are welcome! To get started:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name - Commit your changes:
git commit -m "feat: add your feature" - Push to the branch:
git push origin feature/your-feature-name - Open a Pull Request
Please make sure your code passes the linter before submitting:
flutter analyze
flutter testThis project is open source. See the repository for license details.
Built with ❤️ using Flutter · GitHub