Skip to content

File sharing application | ElectronJs | Socket.io | File Streaming

Notifications You must be signed in to change notification settings

simonmarqvard/OpenDesktop

Repository files navigation

Open Desktop

Collaborative file sharing project built using socket.io, electron and socket-stream

Open Dekstop is an application that reimagines file sharing by using your desktop as a communal environment. Clients can see files located on others clients devices and freely move them - to take, give or distribute files among users. With this application there is no upload or download - simply the movement of files.

Before testing: Be aware

The application is part of an exploration, investigating the question: "Would more creative applications in software be unleashed if we didn't start by saddling designers and developers with privacy and security concerns?". I wanted to see what we could do with software if we didn't care about safety. This application simplifies filesharing between computers - allowing everyone to see files on your desktop. By downloading and starting this application you are potentially running the risk of having your files stolen from your desktop or having other users send you malicious files. Another potential option is to test the repository locally - more information on that later.

To test

Download the repository and change directory into the projectfolder.

Install the necessary node module dependencies.

[electronSocket]$ npm install

Run the application with:

[electronSocket]$ npm run client

Doing this will connect you to my server and potentially other users.

To test it locally

Start a local server on port 8080 by typing

[electronSocket]$ npm start

Go to renderer/renderer.js and change the following

const socket = io("http://smj470.itp.io:8080");
//NOTE: for local testing
// const socket = io("http://localhost:8080");
let arrayWithoutFolders = [];
let filesOnly = [];
//NOTE: for local testing
// const electronFileTestFolder = process.env.FOLDER;
// const testfolder = `${os.homedir}/Desktop/${electronFileTestFolder}`;
const testfolder = `${os.homedir}/Desktop/`;
let noFolders = [];
let updateDesktop;

to the following

//const socket = io("http://smj470.itp.io:8080");
//NOTE: for local testing
const socket = io("http://localhost:8080");
let arrayWithoutFolders = [];
let filesOnly = [];
//NOTE: for local testing
 const electronFileTestFolder = process.env.FOLDER;
 const testfolder = `${os.homedir}/Desktop/${electronFileTestFolder}`;
//const testfolder = `${os.homedir}/Desktop/`;
let noFolders = [];
let updateDesktop;

This will redirect to your localserver and change the testfolder to the folder we are about to create on the desktop. Make similar changes in line 67 and 99 to redirect to the right folder.

Create a folder on your desktop called myFolder and run the application with directions to that folder

[electronSocket]$ Folder=myFolder npm run client

Now you can test the filetransfer between folders by running it from several different folders fx

[electronSocket]$ Folder=myFolder2 npm run client

Overview of program architecture