Skip to content

Repository files navigation

MyDrop

Cross-platform LAN file, folder, and clipboard sharing with end-to-end encryption.

This repository contains:

  • crates/mydrop-core — Rust crypto, protocol, discovery, and transfer engine
  • crates/mydrop-server — Central auth/device registry API (PostgreSQL)
  • Windows/ — WinUI 3 client, background agent, clipboard helper

Prerequisites

Tool Version
.NET SDK 8.0+
Windows App SDK 1.6+ (via NuGet)
Rust stable
Visual Studio Build Tools C++ workload (required for cargo build)
Docker optional, for PostgreSQL
Visual Studio 2022 WinUI workload recommended

Quick Start

1. Database

docker compose up -d
copy .env.example .env

2. Backend API

cargo run -p mydrop-server

API listens on http://localhost:8080.

3. Windows Client

cd Windows
dotnet restore
dotnet build MyDrop.sln -c Release -p:Platform=x64

Set API URL (optional):

$env:MYDROP_API_URL = "http://localhost:8080"

Run:

.\MyDrop\bin\x64\Release\net8.0-windows10.0.19041.0\MyDrop.exe

> **Rust backend:** Install [VS Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) with the **Desktop development with C++** workload, then run `cargo build` from the repo root.

4. Background Agent (optional)

dotnet run --project .\MyDropAgent\MyDropAgent.csproj

Install as Windows Service (Administrator):

.\scripts\install-agent-service.ps1

5. Clipboard Helper (per-user logon)

dotnet run --project .\MyDropClipboardHelper\MyDropClipboardHelper.csproj

Or register at logon:

.\scripts\register-clipboard-helper.ps1

Project Layout

MyDrop/
├── crates/
│   ├── mydrop-core/       # E2EE, mDNS, chunked transfers
│   └── mydrop-server/     # Auth API
├── database/migrations/   # PostgreSQL schema
├── Windows/
│   ├── MyDrop/            # WinUI 3 application
│   ├── MyDropAgent/       # Windows background service
│   ├── MyDropClipboardHelper/
│   └── MyDrop.Shared/     # IPC + API models
└── scripts/               # Service install helpers

API Endpoints

Method Path Description
POST /v1/auth/register Create account + recovery key
POST /v1/auth/login Sign in
POST /v1/auth/recover Tier-1 password reset
POST /v1/devices Register device keys
GET /v1/devices List trusted devices
POST /v1/devices/{id}/revoke Revoke device (password required)
GET /v1/devices/revocations Revoked device IDs

Security Notes

  • Passwords and recovery keys are hashed with Argon2id on the server.
  • LAN payloads use X25519 + ChaCha20-Poly1305 (see mydrop-core).
  • Session tokens are stored with DPAPI + Windows Credential Manager on the client.
  • Firewall rules for UDP 51820 / TCP 51821 are created on Private networks.

Current MVP Status

Implemented in this scaffold:

  • Full auth/register/recover/device API
  • WinUI login, home, devices, settings UI
  • Floating drag-and-drop zone
  • Windows App SDK notifications with Accept/Decline
  • Agent IPC, transfer simulation, firewall rules
  • Clipboard format filtering (text + screenshot heuristic)

Next integration steps:

  • Wire mydrop-core FFI into MyDropAgent for real mDNS + QUIC transfers
  • Persist transfer checkpoints to encrypted SQLite
  • MSIX packaging and Store distribution

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages