CONNECT. SHARE. ANYWHERE.
PRIVATE BY DESIGN. OPEN BY NATURE.
NEXORA is a modern Android application for secure, fast, and convenient file sharing between supported devices.
Direct local network streaming over Wi-Fi and mobile hotspots with zero cloud servers, bounded memory buffers, verified SHA-256 integrity, and zero telemetry.
Click to expand / collapse navigation (36 Sections)
- NEXORA Hero Banner
- Project Tagline
- GitHub Status Badges
- Quick Navigation
- Product Introduction
- Real Application Screenshot Showcase
- Key Features with Visual Icons
- Home Screen Overview
- Live Transfers
- Transfer History
- Devices & Trust Hub
- Settings & Network
- How NEXORA Works
- Animated Device Discovery Workflow
- QR Pairing Workflow
- Secure File Transfer Workflow
- System Architecture
- Technology Stack
- Security and Privacy
- Android Platform Requirements
- Download Latest Android APK
- APK Installation Guide
- Build from Source
- User Guide
- Permissions Explained
- Project Directory Structure
- Testing and Quality Assurance
- Performance and Optimization
- Troubleshooting
- Frequently Asked Questions (FAQ)
- Roadmap
- Contributing
- Security Reporting
- Changelog
- License
- Acknowledgements
NEXORA is a modern Android application for secure, fast, and convenient file sharing between supported devices. Engineered from first principles with Flutter, Kotlin, and a modular Rust core engine, NEXORA eliminates the privacy invasiveness, slow speeds, and cloud barriers that plague conventional Android file transfer tools.
- π 100% Local & Zero Cloud: Data travels directly between devices over local Wi-Fi or mobile hotspots via raw asynchronous TCP sockets. No intermediary relay servers, no cloud storage, and zero internet consumption.
- π« Zero Accounts & Zero Friction: No registrations, no phone numbers, no email verifications, and no user tracking.
- π Zero Telemetry: No background telemetry pings, no advertising SDKs, and zero behavioral tracking.
- β‘ Sub-Second Initiation Latency: Senders transmit lightweight metadata manifests (
TransferOffer) immediately (< 5 ms); receivers display authorization confirmation prompts within 18β31 ms for 2 GB+ files, completely eliminating slow upfront hashing bottlenecks. - πΎ Bounded-Memory Streaming: Multi-gigabyte files (1 GB, 5 GB, 10 GB+) stream through a bounded 1 MB RAM buffer with flow-control backpressure (
ChunkAck), keeping heap memory stable (< 35 MB) even on budget Android devices. - π‘οΈ Cryptographic Verification: On-the-fly streaming SHA-256 chunk digestion guarantees byte-for-byte integrity with zero verification lag upon transfer completion.
Experience the verified user interface of NEXORA running on physical Android devices. Every screen is designed around our signature Midnight Navy (#0D1420), Electric Blue (#3978F6), and Signal Teal (#39C6B0) visual identity:
The Home Screen is the central command center of the NEXORA Android application:
- Device Identity Card: Displays current device nickname, active connection state (
Online), local network IP address (192.168.110.110:48842), andReadybadge. - Scan & Send Primary Hero Action: Large gradient CTA button opening the native CameraX optical QR scanner for instant camera targeting.
- Dual Quick Action Controls:
Send Files: Direct access to device file picker, photo gallery, videos, and multi-file selector.Receive Files: Displays device pairing QR code and local IP address for incoming connections.
- Nearby Devices Radar: Live UDP multicast radar scanning for peers with animated radar pulse indicators and a fallback button for "Connect Directly by IP".
- Recent Transfers Section: Instant summary of recently completed transfer sessions with direct taps to open received files.
The Live Transfers Screen provides real-time visibility into active network streams:
- Live Stream Tracking: Displays active filename, total file size, byte offset, and real-time transfer speed (MB/s).
- Two-Way Completion Protocol: Enforces explicit
TransferCompleteβTransferCompleteAckhandshake. Upon 100% disk persistence, transfers immediately demote from live tracking to History, resetting active speed and ETA to zero and releasing all file handles. - Clean Idle State: Displays clear visual guidance when streams are idle with a prominent "Scan & Send" button.
- Background Foreground Service: Seamlessly synchronizes with Android native
dataSyncForeground Service, showing progress in the device notification shade.
The Transfer History Screen manages an on-device cryptographic ledger of all past transfers:
- Instant Search Bar: Filter transfer sessions by filename, folder name, or peer device nickname.
- Status Filter Chips: One-tap filtering across
ALL,SENT,RECEIVED,COMPLETED, andCANCELLED. - Local SQLite Persistence: Stored entirely on-device inside
nexora.dbwith WAL journaling for crash resilience. Zero cloud sync. - Integrity Audit: Each completed record stores verified SHA-256 hashes, remote peer Ed25519 public key fingerprints, and timestamp metadata.
The Devices & Trust Hub Screen manages local network discoverability and trusted cryptographic relationships:
- Local Discoverability Header: Quick status indicator showing device name (
Arnob) andDiscoverable on Wi-Fistatus. - Nearby Discoverable Peers: Lists actively broadcasting devices detected on UDP port 48843 within a 10-second sliding eviction window.
- Network Problem Fallbacks:
Scan Again: Re-broadcasts UDP multicast packets withWifiManager.MulticastLock.Connect by IP: Directly connect to peer IP address across router AP isolation barriers.Scan QR Code: Optical pairing via native camera scan.
- Trusted Devices Hub: Store paired peers with Ed25519 public keys. Paired devices can be configured to auto-accept incoming transfers without manual confirmation.
The Settings & Network Screen gives users complete control over identity, storage, and networking:
- Device Identity Configuration: Customize your Device Display Name (e.g.
Pixel 9 Pro (NEXORA)) with one-tap Save. - Cryptographic Fingerprint Display: Full SHA-256 fingerprint (
A9:41:63:6C:92:BB:68:00:FB:B6:06:F3:9F:BB:97:A3) derived from the local Ed25519 identity keypair. - Appearance & Themes: System, Dark, and Light theme modes.
- Transfer & Storage:
Download Directory: Direct storage path picker (default:Downloads/NEXORA).Auto-accept from Trusted Devices: Toggle automated acceptance for previously verified peers.
- Network & Engine Diagnostic: Displays active TCP transfer port (
48842), local IP address (192.168.110.110), and engine protocol (NEXORA TCP Bounded 1MB Chunks).
NEXORA operates across three decoupled, high-performance operational phases:
- Discovery Phase: Devices announce their presence across the local subnet using UDP multicast (
224.0.0.167:48843) and directed broadcast. Devices exchange ephemeral UUIDs and Ed25519 public fingerprints. - Negotiation Phase: The sender connects over TCP port 48842 and transmits a lightweight
TransferOffermanifest. The receiver validates paths, checks available storage, and displays confirmation within 18β31 ms. - Streaming Phase: Upon confirmation, the sender slices files into 1 MB chunks, hashes data on-the-fly, and streams chunks through a framed TCP channel with socket flow-control backpressure. Both devices execute an explicit
TransferCompleteAckhandshake upon 100% disk persistence.
- UDP Multicast (
224.0.0.167): Periodic 3-second heartbeat beacons identify peers without exhausting mobile battery. - Hardware MulticastLock: Native Android Kotlin bridge acquires
WifiManager.MulticastLockto prevent Wi-Fi chipsets from discarding multicast packets. - Direct IP Fallback: Allows entering receiver IP directly when routers have AP isolation / Client Isolation enabled.
- CameraX & Google ML Kit: 60 FPS viewport processing with sub-100ms QR decode latency.
- Short Authentication String (SAS): 6-digit numeric comparison code verifies direct human-in-the-loop pairing against active on-path attackers.
- Subnet-Crossing Direct Connection: Optical QR payload encapsulates local IP and ephemeral session tokens, bypassing complex network discovery barriers.
- 1 MB Bounded Chunk Slicing: Slices massive multi-gigabyte files into bounded 1 MB buffer windows, eliminating memory inflation.
- Incremental SHA-256 Digestion: Streaming hashes calculated in parallel with network I/O; verification finishes instantly at 100% completion.
- Two-Way Completion Protocol: Explicit
TransferCompleteβTransferCompleteAckhandshake prevents incomplete file truncation and socket leaks.
NEXORA utilizes a layered architecture combining a Flutter Material 3 Android interface with a modular Rust core engine, native Android Kotlin system bridges, and local SQLite persistence:
graph TD
subgraph UI ["Layer 1: Android Flutter Presentation"]
A1["Material 3 UI Shell"] --> A2["Riverpod State Management"]
A2 --> A3["GoRouter Navigation Shell"]
A2 --> A4["CameraX Optical QR Scanner"]
A2 --> A5["Live Transfer Speed & Progress UI"]
end
subgraph Service ["Layer 2: Dart Orchestration Services"]
B1["DiscoveryService (UDP & Broadcast)"]
B2["TransferClient (TCP Socket Streamer)"]
B3["TransferServer (TCP Server Engine)"]
B4["DatabaseService (Native SQLite)"]
B5["DeviceIdentityService (Ed25519)"]
end
subgraph Rust ["Layer 3: Modular Rust Engine (crates/)"]
C1["discovery β UDP / mDNS"]
C2["identity β Ed25519 Keypairs"]
C3["protocol β 4-Byte Wire Framing"]
C4["transfer β 1MB Chunk Engine"]
C5["verification β Streaming SHA-256"]
C6["security β PathSanitizer"]
C7["resume β Checkpoint Recovery"]
end
subgraph Native ["Layer 4: Android Hardware & OS Abstraction"]
D1["Android Kotlin: WifiManager MulticastLock"]
D2["Android Kotlin: PowerManager PARTIAL_WAKE_LOCK"]
D3["Android dataSync Foreground Service"]
D4["Android Storage Access Framework (SAF)"]
D5["CameraX 1.4 & Google ML Kit Barcode API"]
end
UI --> Service
Service --> Rust
Service --> Native
Frontend: Flutter 3.44.4 Β· Dart 3.10+ Β· Riverpod 2.6 Β· GoRouter 14.8
Android: Kotlin 1.9+ Β· Android SDK 35 (VanillaIceCream) Β· Gradle 8.4
Camera / QR: Jetpack CameraX 1.4 Β· Google ML Kit Barcode Scanning 17.3
Core Engine: Rust 1.94+ Β· Tokio Async Runtime Β· Ed25519-dalek Β· Ring SHA-256
Storage: Native Android SQLiteDatabase (Pure OS C SQLite)
Networking: UDP Multicast (224.0.0.167) Β· Subnet Broadcast Β· Raw Asynchronous TCP
NEXORA is engineered in accordance with rigorous STRIDE Threat Modeling principles:
All network socket messages utilize 4-byte big-endian framing with a strict 5 MB hard ceiling. Any socket claiming an allocation exceeding 5 MB is dropped immediately without memory allocation, preventing remote Denial-of-Service heap exhaustion.
Receivers strictly sanitize all incoming relative paths before creating files on disk:
- Rejects relative directory traversal tokens (
..,/,\). - Strips absolute path prefixes (
/etc/passwd,/system/bin,C:\). - Disallows legacy reserved system filenames:
CON,PRN,AUX,NUL,COM1βCOM9,LPT1βLPT9. - Forces all received files strictly inside the designated Android
Downloads/NEXORAdirectory.
- Ephemeral QR Codes: Encapsulate device IP, port, and session token.
- Short Authentication String (SAS): 6-digit numeric comparison code verifies pairing against active on-path attackers.
- Ed25519 Identity: Locally generated cryptographic keypairs with SHA-256 fingerprints stored in SQLite.
All transfer history, device nicknames, and trusted identities reside exclusively inside the device's local SQLite database (nexora.db). No telemetry, analytics, crash-reporting SDKs, or cloud synchronization routines exist in the codebase.
| Target Tier | Supported Android Versions | Processor Architectures | Recommended Devices |
|---|---|---|---|
| Modern Android (Recommended) | Android 11 through Android 15 (API 30β35) | arm64-v8a (64-bit ARM) |
Pixel, Samsung Galaxy, Xiaomi, OnePlus, Realme |
| Legacy Android | Android 8.0 Oreo through Android 10 (API 26β29) | armeabi-v7a (32-bit ARM) |
Older budget smartphones & 32-bit tablets |
| Tablets & Emulators | Android 8.0 through Android 15 | x86_64 (64-bit Intel/AMD) |
Android Studio Emulators, ChromeOS Android Subsystem |
| Universal Package | Android 8.0 through Android 15 | All ABIs bundled | Any Android device with sufficient storage |
Official release APKs are cryptographically hashed and published under GitHub Releases:
| Architecture | Recommended Devices | Direct Package Download | File Size |
|---|---|---|---|
arm64-v8a |
Modern Android Phones (Recommended) | Download APK (ARM64) | 25.0 MB |
| Universal | Fat binary (All architectures included) | Download Universal APK | 67.0 MB |
armeabi-v7a |
Older 32-bit Android phones | Download APK (ARMv7) | 21.0 MB |
x86_64 |
Android emulators & Chromebooks | Download APK (x86_64) | 27.4 MB |
| Google Play | Android App Bundle | Download AAB Bundle | 59.4 MB |
- Download
nexora-v1.2.1-arm64-v8a.apk(or the Universal APK) on your Android device. - Tap the downloaded APK in your browser notification or file manager.
- If prompted by Android, toggle "Allow from this source" for your browser in device Settings.
- Tap Install and launch NEXORA.
- Grant Nearby Devices / Wi-Fi and Camera permissions when prompted.
- Flutter SDK 3.44+ & Dart SDK
- Android SDK (API 35) & Command-line Tools
- Rust Toolchain 1.94+ (stable)
- Java Development Kit (JDK 17 or 21)
# 1. Clone the repository
git clone https://github.com/CodeByArnob/Nexora-share.git
cd Nexora-share
# 2. Build the Rust core engine workspace
cargo build --workspace --release
# 3. Build Optimized Android Split APKs
cd apps/mobile
flutter pub get
flutter build apk --release --split-per-abi
# 4. Or build Google Play App Bundle (AAB)
flutter build appbundle --releaseCompiled APKs are output to apps/mobile/build/app/outputs/flutter-apk/:
app-arm64-v8a-release.apk(25.0 MB)app-armeabi-v7a-release.apk(21.0 MB)app-x86_64-release.apk(27.4 MB)
- Wi-Fi Network: Connect both Android devices to the same local Wi-Fi router.
- Mobile Hotspot (No Router Needed): If outdoors, turn on Mobile Hotspot on one Android phone and connect the second Android phone to it. NEXORA transfers files at full Wi-Fi speeds without consuming cellular data.
- Discovered peers appear automatically on the Nearby Devices radar.
- On the sender phone, tap Scan & Send or tap a discovered peer.
- Select files, photos, videos, or entire folders.
- Tap Send Now. The receiver displays an authorization confirmation prompt in < 20 ms.
- The receiver taps Accept. The transfer streams with real-time speed, progress bars, and ETA indicators.
- Once complete, files are saved directly to
Downloads/NEXORA.
NEXORA requests only permissions strictly necessary for local peer-to-peer file transfer:
NEARBY_WIFI_DEVICES: Allows discovering nearby peers on local Wi-Fi without requesting GPS location access (Android 13+).FOREGROUND_SERVICE_DATA_SYNC: Ensures continuous data streaming when screen locks or app switches.POST_NOTIFICATIONS: Displays active transfer speed, progress bar, and completion notifications.CAMERA: Used exclusively for scanning peer pairing QR codes. Never records video or takes photos.WAKE_LOCK: Prevents CPU deep-sleep while handling multi-GB transfers.ACCESS_NETWORK_STATE&ACCESS_WIFI_STATE: Validates active Wi-Fi and hotspot interfaces.CHANGE_WIFI_MULTICAST_STATE: Allows acquiringWifiManager.MulticastLockfor UDP packet reception.
Nexora-share/
βββ apps/
β βββ mobile/ # NEXORA Android Application (Flutter, Material 3, Kotlin, CameraX)
βββ crates/
β βββ discovery/ # UDP multicast (224.0.0.167), subnet broadcast & mDNS
β βββ identity/ # Ed25519 keypair generation & cryptographic fingerprinting
β βββ pairing/ # Ephemeral QR payload, SAS codes & challenge-response
β βββ security/ # PathSanitizer & directory traversal defense engine
β βββ protocol/ # 4-byte big-endian framing & message definitions
β βββ transport/ # Framed asynchronous TCP network stream reader/writer
β βββ transfer/ # Bounded 1MB chunk slicing engine & progress tracking
β βββ resume/ # Checkpoint offset tracking & resume safety
β βββ verification/ # Streaming on-the-fly SHA-256 chunk & whole-file hashing
β βββ storage/ # SQLite schema migrations, trust store & transfer history
βββ docs/
β βββ assets/
β β βββ branding/ # High-resolution hero banners, vectors & badges
β β βββ screenshots/ # Real Android application screenshots & mockups
β β βββ animations/ # Lightweight GIFs: discovery, QR pairing, progress
β β βββ feature-graphics/ # Vector SVG cards for key application capabilities
β βββ ANDROID_INSTALLATION.md # Dedicated Android sideloading instructions
β βββ ARCHITECTURE.md # In-depth architectural design specifications
β βββ PROTOCOL.md # Wire protocol framing & message schema specifications
β βββ THREAT_MODEL.md # STRIDE security & threat analysis
βββ scripts/ # Automated release & size monitoring scripts
βββ website/ # Official React + TypeScript + Vite project website
βββ Cargo.toml # Rust root workspace configuration
βββ README.md # Primary project documentation
NEXORA enforces high quality assurance with automated test suites spanning mobile integration, latency benchmarks, and Rust engine crates:
# Run Mobile unit & widget test suite (22 tests + latency benchmarks)
cd apps/mobile && flutter test --concurrency=1
# Run Rust engine workspace tests
cargo test --workspace
# Static code analysis
flutter analyze apps/mobile- Static Analysis:
flutter analyze apps/mobilepasses with 0 issues found. - Unit & Integration Suite: All 22 mobile tests pass cleanly.
- Automated CI: GitHub Actions validates formatting, linter, tests, and APK split builds on every pull request.
Benchmarked on a real 2.0 GB file transmission across Android devices:
- Manifest Creation Latency:
4 ms - Receiver Prompt Response Latency:
17 ms - Verification Lag After 100% Transfer:
0.00 ms(Hashed on-the-fly during stream) - Target SLA Requirement:
< 1,000 ms(PASS β 98% faster than SLA)
- Fixed Heap Allocation: Slices files into bounded 1 MB buffer windows.
- Constant Memory Footprint: Average RAM usage on Android devices during 10 GB+ streaming remains stable at < 35 MB.
- Cause: The Wi-Fi router may have AP Isolation / Client Isolation enabled.
- Solution: Use the Scan & Send button to scan the receiver's QR code, or tap Connect by IP and enter the receiver's displayed IP address. Alternatively, turn on Mobile Hotspot on one device and connect the other device to it.
- Cause: Android battery optimization may have restricted background execution.
- Solution: Ensure Notification Permission is granted so the
dataSyncForeground Service can hold the transfer active. In Android device Settings, set NEXORA's battery usage to "Unrestricted".
- Cause: Storage access not granted for custom download directories.
- Solution: NEXORA saves files to the standard
Downloads/NEXORAfolder. Ensure the application has storage access permissions enabled in device App Info.
Does NEXORA consume mobile internet data?
No. NEXORA communicates exclusively over your local Wi-Fi router or portable mobile hotspot. No cellular data or internet bandwidth is consumed during transfers.What is the maximum file size supported?
There is no file size limit. Transfers of 5 GB, 10 GB, and 50 GB+ execute smoothly because data streams in bounded 1 MB chunks without inflating RAM.Can I use NEXORA outdoors without a Wi-Fi router?
Yes! Turn on Mobile Hotspot on one Android phone and connect the second Android phone to it. NEXORA will immediately discover the peer and transfer files at full Wi-Fi speeds without consuming any cellular quota.Which Android versions are supported?
NEXORA supports Android 8.0 Oreo (API 26) through the latest Android 15 (API 35).- High-performance local Android discovery (UDP multicast, broadcast, mDNS)
- Bounded-memory 1 MB chunk streaming with flow-control backpressure
- Native CameraX QR Code scanner with Google ML Kit
- Sub-second large file initiation latency (< 20 ms prompt SLA)
- ABI-split Android APKs (< 25 MB package size)
- Native Android SQLiteDatabase integration
- Two-way completion handshake protocol
- Direct Wi-Fi Aware / Wi-Fi Direct zero-hotspot peer connection
- End-to-end TLS 1.3 socket encryption with post-quantum key exchange
- Zero-install WebRTC browser client for instant cross-device sharing
Contributions are warmly welcomed! To get started:
- Fork the repository on GitHub.
- Create a clean feature branch:
git checkout -b feature/my-enhancement. - Adhere to the established code architecture, brand guidelines, and test requirements.
- Ensure all tests pass:
cd apps/mobile && flutter test. - Open a Pull Request targeting
main.
- Bug Reports: Open an issue via GitHub Issues.
- Security Vulnerabilities: Review
docs/THREAT_MODEL.mdand report security issues confidentially to the maintainer via GitHub Security Advisories.
- [v1.2.1] (Current Production Release): Bidirectional file-transfer synchronization, instant receiver awareness upon offer, unified Transfer Coordinator, cancellation handshake (
TransferCancel/TransferCancelAck), accurate zero-byte progress calculation (0%), and idempotent history tracking. - [v1.2.0]: Next-gen Wi-Fi Direct router-free peer-to-peer transport engine, Wi-Fi Aware (NAN), BLE out-of-band discovery (< 500 ms), real-time
StatFsstorage validation, and dynamic transport badges. - [v1.1.0]: Exclusive Android focus, optimized split APKs (21β25 MB), sub-second large file initiation latency (< 20 ms), native CameraX QR scanner, streaming SHA-256 integrity.
- [v1.0.3]: Transfer completion two-way handshake, live transfer state demotion, and bounded memory streaming.
- [v1.0.1]: Background execution foreground service and pause/cancel controls.
- [v1.0.0]: Initial production architecture release.
See CHANGELOG.md for full change history.
NEXORA is open-source software licensed under the Apache License 2.0.
NEXORA is made possible thanks to these open-source technologies:
Designed with precision for open-source peer-to-peer productivity on Android.







