Skip to content

mlasala45/p2pdevicemessaging

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

P2P Messaging App

A hybrid mobile/web app designed to allow peers to connect to each other directly using WebRTC, and exchange messages and files. The original intended use-case is similar to Microsoft Edge Drop, allowing a quick and easy way to pass links and files between devices, but it can be used as a conventional chat app as well.

The app is not currently in a production state. It is functional in a development environment, but has not yet been vetted for production. The app runs on Web and Android; there are no plans to develop or test iOS compatibility.

These instructions will be expanded once the app reaches a production version.

Important

This app does not include any security features or encryption, and has not been designed with security in mind. Do not use it to transmit sensitive information.

Getting Started (Development)

You can clone the project onto your workstation and run it using npm run scripts. Make sure to run npm install to download the dependencies first.

Warning

Commands must be run from the WSL Shell, and it is recommended to host the project directory on the WSL filesystem.

npm run mobile will start Metro, which can build and deploy a development version to a connected Android device over adb.

npm run web will start Webpack, which will serve the web version to localhost.

Basic Usage

Due to security constraints, the app requires the use of a Signaling Server, which is included in the project directory. It can be started with node. In future, only connections involving the web version will require this; mobile-to-mobile connections should be possible without it.

The app can be navigated using the Navigation Drawer on left side of the screen. In Settings, make sure you are connected to the Signal Server.

Use the 'Connect to new Device' dialog to send a connection request (make sure you use the 'By Signal Server' option). Your Home page will tell you your IP address, and the Code that corresponds to it. Enter the code for the other device's address, and press Send.

The request should appear on the other device. Once accepted, a connection will be established between the two devices, and a chat channel will be created. After the initial connection, either device can connect or disconnect the channel.

Tip

Press and hold to start selecting chat bubbles.

Features

  • Detects IPv4 addresses and translates them into 7-digit alphanumeric codes for easier communication.

  • Connection request management system.

  • Username system to distinguish peers under the same public address.

  • Dynamic connection negotiation using ICE.

  • Clipboard Integration

  • Chat History Management

Planned Features

This is a hobby project with no development timetable, but at some point in the future:

  • Link Highlighting

  • Send Images and Files

  • Direct Connection (no Signal Server) for mobile-to-mobile connections

  • Security Overhaul (Encryption, Spoof Resistance)

  • QR Code Pairing

  • Multilateral Message Groups (Group chats)

Technology Stack

Environment

I recommend the following development environment:

  • Windows Subsystem for Linux (WSL).

  • Text Editor and Terminals: VSCode

  • Android Device Bridge (adb)

About

A hybrid mobile/web app for P2P messaging.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published