• Stars
    star
    136
  • Rank 267,670 (Top 6 %)
  • Language
    TypeScript
  • License
    GNU Affero Genera...
  • Created about 5 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Use a Windows/OSX like GUI in the browser to share files cross OS privately. No cloud, no server, no third party.

Share File Systems

Purpose

A fully decentralized social application built from the file system first. This application makes no use of blockchain or other crypto-coin technologies.

Imagine your mom copy and paste a file from your computer to hers a hundred miles away using her web browser. Openly share your hard drives with yourself and people you trust in as little or as much as you wish. The application uses a familiar Windows/OSX like GUI experience in your web browser. No cloud, no servers, no third party, or intermediary of any kind.

This application seeks to be inherently private. Everything is directly point to point to users and devices you invite and therefore end-to-end encrypted and always private.

Media

Videos

Screenshots

Features

  • Point-to-point communications, no servers and no third party.
  • Fully load graphic user interface as fast as 80ms on old hardware in the browser with full state restoration (65ms without custom fonts). See the white paper.
  • End-to-end encryption.
  • Share anything you want and communicate between your personal devices or allow discretionary sharing with friends and family.
  • Works the same on Windows, Linux, and Mac OSX on modern terminals and modern browsers.
  • Real time communications for all status, changes, and interactions.
  • A Windows/OSX like graphic user interface in just a few functions that are easy to extend and customize.
  • File interactions of multiple files via shortcut key combinations, drag and drop, and copy/paste using a context menu.
  • Application saves state on each user interaction, which allows application to resume without disruption.
  • Application state available between different browsers on the same computer and exportable to different computers.
  • A robust security model.
  • File integrity checks via SHA3-512 hash.
  • A variety of tools optionally available via terminal commands.
  • For use with Electron or Tauri see the documentation.

License

AGPLv3

Version

0.3.0

Build and execute on desktop

First build

  1. Install latest version of Node.js. I recommend using a version manager:
    1. Windows NVM
    2. Linux, OSX
  2. Install git
  3. Nerdy terminal commands
    1. Clone the application from Github into a directory named share.
      • git clone https://github.com/prettydiff/share-file-systems.git share
    2. Install the application
      • node share/install
    3. Execute the application.
      • share
  4. Open your favorite modern browser to https://localhost
    • If this doesn't work make an exception in your local firewall for port 80, 443, or which ever port you specify.

Please note the install script requires use of sudo on Linux to install certificates and allow access to restricted ports.

Later builds

  • share will execute the application services from any file system location.
  • share build will rebuild the application from any file system location.
  • share update will pull updates from Github, rebuild the application, and run services.
  • share commands will display all supported terminal commands
  • share commands copy providing a command name as an argument for the commands command provide documentation of supported conventions with examples

Execute test automation demo (opens your default browser)

  1. share test_browser

Troubleshooting

Firewall

In almost every case the reason why connections fail is because one of more computers have a firewall blocking traffic.

  1. To verify whether or not firewalls are the problem temporarily disable the firewalls at both ends and try to connect again.
  2. Ensure the firewall contains both an inbound and outbound rule for the exact version of Node.js.
  3. These firewall rules must permit TCP traffic for private and public connections for at least the ports used by the application, by default that is 443 and 444.
  4. It is also helpful to enable firewall rules for ICMPv6 to test if a remote agent is reachable over the network with a ping test.
  5. Windows users who use Windows Defender Firewall can solve for firewall concerns with this command: share firewall

Connecting over the internet

IPv6

If you are attempting to connect to a remote agent outside your local network router/switch you must use an IPv6 address.

  • IPv6 addresses contain colon characters separating up to 8 blocks of 1-4 alpha-numeric characters.
  • Example: 2600:1700:30e1:15b8:f791:a135:376f:2317

IPv4

IPv4 addresses are fine only so long as both computers share the same local router, which is because routers impose Network Address Translation (NAT).

  • IPv4 addresses contain periods and 4 sets of numbers.
  • Example: 127.0.0.1

More Repositories

1

prettydiff

Beautifier and language aware code comparison tool for many languages. It also minifies and a few other things.
TypeScript
1,752
star
2

wisdom

Building better developers by specifying criteria of success
573
star
3

a11y-tools

JS Accessibility Tool List
361
star
4

biddle

Self-hosted application distribution
JavaScript
66
star
5

semanticText

Copy paste tool that analyzes the semantic description of all text in the DOM
JavaScript
28
star
6

getNodesByType

a custom DOM method to get nodes by node type
JavaScript
18
star
7

colorContrast

accessibility color contrast tool
JavaScript
17
star
8

Array.prototype.last

A proposal for an ECMAScript native method
7
star
9

schadenfreude

JavaScript
4
star
10

cliTester

Run tests from the command line
JavaScript
2
star
11

safeSort

An array sorting scheme that is faster and more consistent than JavaScript's native array.sort method.
JavaScript
2
star
12

mp3

batch converts media to MP3
TypeScript
2
star
13

prettybytes

Convert positive integers to human readable file sizes
JavaScript
2
star
14

webserver

WebSocket first web server, HTTP over WebSockets
TypeScript
1
star
15

drial

End-to-end test automation in the browser as the user clicking and typing things.
TypeScript
1
star
16

hn_dark

Dark color theme for Hacker News
CSS
1
star
17

homework

A job interview assignment
TypeScript
1
star
18

freshapp

An application primer
TypeScript
1
star
19

simple

Simple Language, a language that is syntax simple and structally dense
JavaScript
1
star
20

liberty-license

Working out the details of a new software license for free and open software to limit misrepresentation
1
star
21

mp3-master-list

Creates a sortable and filterable list of MP3s including hashes, directory information, and ID3 data.
HTML
1
star