Build a secure, offline, cross-platform file sharing application that delivers an AirDrop-like experience across Windows, Linux, and macOS.
- Cross-platform
- Offline-first
- Secure by default
- Fast
- Modular architecture
- Contributor-friendly
- Extensible transport layer
Goal: Create the application's architecture.
- Project structure
- Module organization
- Application manager
- Global state
- Event bus
- Configuration system
- Logging
- Graceful shutdown
- Error handling
WireSend starts successfully.
Goal: Design the communication protocol.
- Message definitions
- Serialization
- Packet versioning
- Error messages
- Capability negotiation
A stable protocol shared by every transport.
Goal: Represent nearby devices.
- Device model
- Device manager
- Device cache
- Device expiration
- Device capabilities
The application can manage discovered devices.
Goal: Discover nearby devices automatically.
- mDNS discovery
- BLE discovery
- Merge discovery results
- Device deduplication
Nearby devices appear automatically.
Goal: Connect to discovered devices.
- TCP listener
- TCP client
- Connection manager
- Connection lifecycle
- Timeouts
Devices can establish a connection.
Goal: Securely identify peers.
- Key generation
- Public key exchange
- Session key derivation
- Trust management
- Pairing requests
Encrypted communication.
Goal: Send files.
- Metadata exchange
- Chunk streaming
- Progress reporting
- Integrity verification
- Completion
Files transfer successfully.
Goal: Handle real-world transfers.
- Queue
- Pause
- Resume
- Cancel
- Retry
Reliable transfers.
Goal: Persist application data.
- History
- Trusted devices
- Configuration
- Cache cleanup
Settings and history survive restarts.
Goal: Build the user interface.
- Device list
- Send dialog
- Incoming requests
- Progress
- Notifications
- History
- Settings
Fully usable desktop application.
- Unit tests
- Integration tests
- Multi-device testing
- Cross-platform testing
- Performance testing
- Installers
- CI/CD
- GitHub Releases
- Documentation
- Contribution guide
These are intentionally independent features that contributors can build without changing the core.
- NFC discovery
- QR code pairing
- USB discovery
- LAN broadcast improvements
- QUIC transport
- WebShare (browser-based sharing)
- Relay mode
- Mobile hotspot transport
- Folder transfer
- Clipboard sharing
- Text sharing
- Drag & drop
- Broadcast to multiple devices
- Trusted device groups
- Device verification codes
- Fingerprint comparison
- Transfer approval policies
- Themes
- Accessibility improvements
- Localization
- Custom device avatars
- CLI client
- SDK
- Plugin system
- Shell integration
- Context menu ("Send with WireSend")
To keep the project maintainable and contributor-friendly, we follow these rules:
-
Discovery is separate from transport
Discovery finds devices. Transport moves data.
-
Protocol is transport-agnostic
The same protocol works over TCP, QUIC, or future transports.
-
Feature modules are independent
New discovery methods or transports should plug into existing interfaces.
-
Everything communicates through events
Managers publish and subscribe to events rather than calling each other directly.
-
Every milestone ends in a working application
The project is always usable, even while new features are being developed.