rulingAnts / cross_platform_file_transfer_app

Repository from Github https://github.comrulingAnts/cross_platform_file_transfer_appRepository from Github https://github.comrulingAnts/cross_platform_file_transfer_app

Rapid Transfer - Cross-Platform File Transfer App

A fast, secure, and easy-to-use file transfer application for local networks, supporting Android, Windows, and macOS.

Overview

Rapid Transfer enables seamless file sharing between devices on the same local network with:

  • Zero configuration - automatic device discovery using UDP broadcast
  • Fast transfers - multi-stream parallel connections for maximum speed
  • Secure - TLS 1.3 encryption with device verification
  • Resume capability - interrupted transfers can be resumed
  • Cross-platform - works between Android, Windows, and Mac devices
  • User-friendly - icon-driven interface with minimal text
  • Bilingual - English and Indonesian (Bahasa Indonesia) support

Features

Core Capabilities

  • Automatic device discovery on local networks
  • Multi-stream transfers (1-8 parallel streams based on file size)
  • TLS 1.3 encrypted transfers
  • Device pairing with verification codes (like Bluetooth pairing)
  • Resume interrupted transfers
  • Folder compression (automatic tar.gz)
  • SHA-256 checksums for data integrity
  • Queue management with progress tracking

Desktop (Electron/Node.js)

  • Drag-and-drop file transfer
  • Device cards with connection status
  • Transfer queue with detailed progress
  • Settings for stream count, language, notifications
  • macOS Universal DMG and Windows NSIS installer

Mobile (Flutter/Android)

  • Share intent support (send from any app)
  • File picker and gallery picker
  • Swipeable transfer queue
  • Hotspot mode for direct connections
  • WiFi Direct support (Android-to-Android)
  • Wake lock to prevent sleep during transfers
  • Battery monitoring with warnings

Project Structure

.
├── desktop_app/          # Electron desktop application
│   ├── src/
│   │   ├── main.js       # Main process
│   │   ├── preload.js    # Context bridge
│   │   ├── services/     # Discovery, transfer, device management
│   │   └── ui/           # HTML/CSS/JS renderer
│   └── package.json
│
├── mobile_app/           # Flutter mobile application
│   ├── lib/
│   │   ├── main.dart     # App entry point
│   │   ├── models/       # Data models
│   │   ├── services/     # Business logic
│   │   ├── screens/      # UI screens
│   │   ├── widgets/      # Reusable widgets
│   │   └── l10n/         # Localization files
│   └── pubspec.yaml
│
└── scripts/              # Build and deployment scripts

Getting Started

Desktop App

Prerequisites:

  • Node.js 20+
  • npm 10+
cd desktop_app
npm install
npm start                 # Development
npm run build             # Build for current platform
npm run build:mac         # Build for macOS
npm run build:win         # Build for Windows

Mobile App

Prerequisites:

  • Flutter 3.9.2+
  • Android SDK
  • JDK 17
cd mobile_app
flutter pub get
flutter run               # Development
flutter build apk         # Build APK

Or use the provided scripts:

./scripts/build_apk.sh
./scripts/build_aab.sh

Network Architecture

Discovery

  • Protocol: UDP Broadcast
  • Port: 8766 (discovery only)
  • Broadcast: Device name, ID, platform, version (JSON format)
  • Frequency: Every 5 seconds
  • Timeout: 30 seconds (devices not seen are removed)
  • Works on ALL platforms without any external dependencies

Transfer Protocol

  • Transport: TCP with TLS 1.3
  • Port: 8765 (file transfers)
  • Streams: Dynamic (1-8 based on file size)
    • < 10 MB: 1 stream
    • 10-100 MB: 2 streams
    • 100 MB - 1 GB: 4 streams
    • > 1 GB: 6 streams
  • Chunks: 1 MB for granular progress and resume
  • Verification: SHA-256 checksums per chunk and full file

Security

  • TLS 1.3 encryption for all transfers
  • Certificate pinning after first pairing
  • Device verification with random 3-digit codes
  • No passwords needed or stored
  • Man-in-the-middle protection

Localization

The app supports:

  • English: Standard interface
  • Indonesian (Bahasa Indonesia): Simple, accessible language designed for users in Papua with limited formal education

Common terms:

  • Send = Kirim
  • Receive = Terima
  • Device = Perangkat
  • File = File
  • Transfer = Transfer

User Workflow

  1. Discovery: App automatically discovers other Rapid Transfer devices on the network
  2. Pairing: First-time connection shows a verification code on both devices
  3. Trust: Users confirm the code matches and accept to trust the device
  4. Transfer: Drag-and-drop files (desktop) or use share/file picker (mobile)
  5. Progress: Real-time progress with speed, ETA, and queue management
  6. Resume: If interrupted, transfers auto-resume when devices reconnect

Performance Targets

  • Discovery latency: < 2 seconds on same LAN
  • Transfer speed: ≥ 10 Mbps on modern WiFi (802.11ac+)
  • Resume latency: < 5 seconds after reconnection
  • Memory usage: < 500 MB for 10 GB file transfer
  • File size: No hard limit (tested with multi-GB files)

Development Status

This is the initial implementation including:

  • ✅ Project structure for desktop and mobile
  • ✅ Basic UI frameworks
  • ✅ Device discovery infrastructure
  • ✅ Transfer service architecture
  • ✅ Localization support (English and Indonesian)
  • ✅ Settings management
  • 🚧 Network protocol implementation (in progress)
  • 🚧 Multi-stream transfer logic (in progress)
  • 🚧 Resume mechanism (in progress)
  • 🚧 File compression (in progress)
  • 🚧 Android-specific features (hotspot, WiFi Direct)

Contributing

This project follows these principles:

  1. Minimal text, maximum icons - UI should be comprehensible without reading
  2. Simple language - Especially in Indonesian translations
  3. Zero configuration - Users shouldn't need to know IP addresses or network settings
  4. Security by default - All transfers encrypted, devices verified
  5. Fail gracefully - Clear error messages and recovery options

License

AGPL-3.0 License

Copyright (C) 2025 Seth Johnston

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Network Use Notice: If you modify this software and make it available over a network, you must make the source code of your modifications available under AGPL-3.0.

See LICENSE.md for full license text and third-party attributions.

Acknowledgments

This software was developed with the assistance of:

  • GitHub Copilot - AI-powered code completion
  • VS Code Copilot Agent (Claude Sonnet 4.5) - AI development assistant

Support

For issues, questions, or contributions, please open an issue on GitHub.

About

License:Other


Languages

Language:Dart 54.6%Language:JavaScript 27.7%Language:Shell 9.5%Language:HTML 5.0%Language:CSS 3.2%Language:Kotlin 0.1%