Skip to content

Send files to any device using this cross-platform file sharing program.

Notifications You must be signed in to change notification settings

jaeha-choi/Hackathon-2021

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PROJECT COCONUTS

Track:

INTERACT

Github repo: https://github.com/jaeha-choi/Hackathon-2021

Objectives

  • Share files between devices easily.
  • Sends the clipboard content. (Only in LAN unless using heartbeat packets. Mobile devices may not support heartbeat too well)
  • End-to-end encryption setting for enhanced security.
  • Optional: Support all functionalities in WAN
  • Optional: Tcp hole punching or uses central server if user desires (for enhancing privacy)

Desired User Experience:

Desired user experience is to have a cross platform application to send files and clipboard data to the user's various devices.

Supported Operating Systems

  • Desktop: Windows/macOS/Linux
  • Mobile: Android/iOS

Dependencies:

  • Python: Base language for server / desktop clients
  • Flutter: Used for android/iOS apps
  • PyQt==5.15.4: Used for client GUI
  • pyperclip==1.8.2: Used for clipboard
  • qdarkstyle==3.0.2: Used for dark mode on desktop client
  • xrange: Used for cycling through list widget

GUI Requirements

All Versions

  1. "Clipboard send" button: Clicking the button will broadcast the clipboard content to all devices
  2. "File picker" button: Picks a file. Should support multiple file selection
  3. "Send" button: Sends the file.
  4. "Host" field: A text field to enter host (or unique ID)
  5. "Host" label: A distinctive label that shows current device's host (or unique ID) A. Optional: Support dark mode + button to trigger it

Desktop

  • A. Optional: Drag and drop support
  • B. Optional: Key binding (aka shortcut) support

image

Mobile

  1. "Select Images" button: Picks images and videos by opening the gallery.

image

Functional Requirements

Client

  1. When the app opens, initial packet will be sent to the server for hole punching
  2. If hole punching is successful (need to decide how to determine successful state), standby and send heartbeat every few min
  3. If hole punching is unsuccessful, notify user that central server is going to be used for transferring data.

Server

  1. Relay Server: Stores basic information about the host including the following:
    - UUID (some portion will be used by the peer to connect)
    - Public IP
    - Port
    - Private IP (could be unnecessary)
  1. Central Server: Transfer data via central server if hole punching was unsuccessful.

Future Work:

  • Fix mobile application
  • Add a connection box for Desktop
  • Fix button layout for Desktop

Contributors:

About

Send files to any device using this cross-platform file sharing program.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •