Skip to content

Commit 7d05b18

Browse files
Add README.md
1 parent af1ebbe commit 7d05b18

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

README.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# PeerViewer codebase
2+
3+
PeerViewer is a remote desktop and support solution, completely free for unlimited personal and commercial use.
4+
5+
Under the hood, it uses direct (peer-to-peer) connections between the participants.
6+
7+
This was recently made possible by the advanced holepunching techniques, made by the HolePunch company.
8+
9+
# Why peer-to-peer?
10+
Traditionally, when you use network apps such as TeamViewer, place audio and video calls or share files, your data is going through intermediate servers which are expensive to host, can harm your privacy, increase latency and consume additional bandwidth.
11+
12+
Peer-to-peer solutions such as PeerViewer have the advantage of:
13+
14+
- Being the highest bandwidth AND lowest latency way of establishing a network connection.
15+
- Ensuring maximum privacy for all participants.
16+
- Being low cost, making it possible to survive on a pay-what-you-can/voluntary/donation basis.
17+
- Minimizing time-to-market and allowing for quick MVP's without a lot of server-side datacenter setup work.
18+
- Building blocks
19+
20+
We're lucky to be standing on the shoulders of giants to pull this off.
21+
22+
Here's a list of some key, free and open-source technologies that make this possible:
23+
24+
- HolePunch, for establishing direct peer-to-peer connections.
25+
- LNBits, for quickly building reusable payment QR codes using the LNURLp standard.
26+
- Electron, for building standalone applications using open web standards.
27+
- Bitcoin and Lightning, for accepting payments without needing anyone's permission or approval.
28+
29+
# Development
30+
31+
## Install dependencies
32+
33+
To install the dependencies from package.json using the specific version from package-lock.json, run:
34+
35+
`npm install`
36+
37+
## Download and extract TigerVNC
38+
39+
Before starting the app, first make sure you have downloaded and extracted the TigerVNC software:
40+
41+
`./vnc-software/download_tigervnc.sh`
42+
43+
## Start the app
44+
45+
To start the PeerViewer standalone Electron app, do:
46+
47+
`npm run # which runs the "start" script from package.json`
48+
49+
You can enable Chrome Developer Tools by setting "devTools: true" in src/main.js and then pressing CTRL-SHIFT-i in the app.
50+
51+
## Build a release
52+
53+
To build a release, have a look at the interactive script:
54+
55+
`./release.sh`
56+
57+
## Run as webapp
58+
59+
To run it as a webapp on http://localhost:8000/, do:
60+
61+
`./serve_dev_website.sh`
62+
63+
Note that HolePunch and the VNC client and server binaries don't work in the webapp.
64+
65+
To get this working in a webbrowser as a webapp, it should be possible to integrate https://novnc.com/ as the VNC Client and use the HolePunch DHT websocket relay for connections.
66+
For the server-side, it might be possible to build a browser-based VNC server using https://developer.mozilla.org/en-US/docs/Web/API/Screen_Capture_API/
67+

0 commit comments

Comments
 (0)