Skip to content

bandwidthdev/dataplug

Repository files navigation

DataPlug: Peer-to-Peer Bandwidth Sharing Platform Technical Overview

DataPlug enables direct internet sharing between distant peers without LAN/Bluetooth connectivity using WireGuard VPN tunnels. The solution addresses Uganda's internet affordability crisis by allowing users to share unused WiFi bandwidth with nearby data-constrained users. Network Architecture

The system utilizes NAT traversal (Network Address Translation traversal) to establish connections between devices behind different routers/firewalls. This technique allows peers to discover their public-facing IP addresses and bypass network barriers that normally prevent direct device-to-device connections.

NAT Traversal Implementation:

Uses STUN (Session Traversal Utilities for NAT) protocol

Leverages public STUN servers (e.g., Google's stun.l.google.com)

Enables direct P2P connections across separate networks

Maintains end-to-end encryption via WireGuard

Core Components

Device Identification

    Unique device ID generation

    No traditional signup required

    Minimal user profile storage

Bandwidth Sharing

    Sharer-defined speed tiers (Good/Medium/Slow)

    Configurable user slots

    One-tap sharing activation

Connection System

    WireGuard-based VPN tunnels

    Automatic NAT traversal

    Location-aware peer discovery

Offline Operation

    Cached peer listings

    Pre-stored connection configurations

    Low-data bootstrap (<2KB initial requirement)

System Workflow

Sharer Activation

    User enables sharing mode

    Sets speed tier and slot capacity

    Device publishes availability

Receiver Connection

    Browse nearby sharers (cached or live)

    Select suitable peer

    Establish secure VPN tunnel

Data Routing

    All traffic routes through sharer's connection

    End-to-end WireGuard encryption

    Automatic disconnection on poor quality

Technical Specifications

Frontend: Flutter (iOS/Android)

Backend: Firebase (Firestore, Cloud Functions)

VPN Protocol: WireGuard

Caching: Hive DB

NAT Traversal: STUN protocol

Security: Device-based identification + WireGuard encryption

Deployment Requirements

Firebase project configuration

Flutter 3.10+ environment

Mobile devices supporting VPN connections

Internet connectivity for initial bootstrap

Future Development

Mesh networking capabilities

Usage-based incentive systems

Automated bandwidth verification

Community moderation tools

Network health monitoring

License

GNU Affero General Public License v3.0

About

badwidth sharing

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published