The app uses web-technologies and runs on any modern web browser. For establishing the connection between two devices, a WebRTC signalling server (PeerJS) is used. This server, however, is not involved in the data transfer process.
All files being transmitted get encrypted by WebRTC standards, no one except the two devices would be able to read them. For further clarification, no files are ever sent to any server, and the file are always transferred directly (P2P) from one device to another through an encrypted WebRTC/WS channel.
Sadly no. 😞 Only browsers with the support for WebRTC can support Bayjdo, however, all modern & popular browsers do support WebRTC and hence Bayjdo 🍻
NextJS / PeerJS / WebRTC / WebSocket
Being an open source project, any sort of contributions - pull requests, bug reporting, feature request, documentation help are all welcomed.
Clone this repository and rename the folder to webapp. Create file docker-compose.yml outside this folder.
You directory structure should appear as follows:
my-project
├── docker-compose.yml
└── webapp
version: '3.6'
services:
bayjdo_server:
container_name: bayjdo_server
image: peerjs/peerjs-server
ports:
- 9000:9000
bayjdo_webapp:
container_name: bayjdo_webapp
image: webapp
ports:
- 3000:3000
environment:
- PORT=3000
volumes:
- ./webapp:/app
- /app/node_modules
- /app/.next
build:
context: webapp
dockerfile: Dockerfile-Dev
command:
"npm run dev"
Modify property host of object prodConfig in hooks/usePeer.js to "localhost". Also modify the property port to "9000".
Your prodConfig should look like:
const prodConfig = {
host: 'localhost', // or internal-ip
secure: true,
port: 9000,
path: '/signaller',
debug: 1
};
⚠️ If you wish to test the local install on another device you will need to use your internal ip-address instead of localhost. If you are on a linux based system you can find your internal IP by issuing:
hostname -I
sudo docker-compose up
This project is currently only being developed, as a hobby project and does not intend to replace any popular file transfer application. The implementation of this project is currently very basic, and intends only to be a proof of concept for the technology used. This app may have technical glitches, security & privacy vulnerabilities. If you plan to use it for transferring confidential files etc., please look elsewhere for now.
Neither the idea for this project, nor the technology used, were conceived originally by me. This project only differs in implementations (+ some minor features), from some of the following popular projects it was inspired from -
This project is licensed under the GNU General Public License V3.
Developed with ♥ by Ashwin Shenoy & other Open Source Contributors.