https://github.com/malykhin/p2piper
Application to share data between devices with WebRTC data channels.
https://github.com/malykhin/p2piper
nextjs nodejs react socket-io webrtc
Last synced: 2 months ago
JSON representation
Application to share data between devices with WebRTC data channels.
- Host: GitHub
- URL: https://github.com/malykhin/p2piper
- Owner: malykhin
- Created: 2021-03-24T08:12:21.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-04-06T09:06:57.000Z (about 3 years ago)
- Last Synced: 2025-06-04T10:53:04.388Z (about 1 year ago)
- Topics: nextjs, nodejs, react, socket-io, webrtc
- Language: TypeScript
- Homepage: https://p2piper.com/
- Size: 628 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# p2piper
This repository is a source code for the application https://p2piper.com. I often need to transfer some text notes or files between devices, especially from phone to pc. Solutions like cloud storage, messenger, or native application aren't always handy. However, the WEB browser can easily handle this. That is my primary motivation for the implementation. There is no registration process for using this app.
# Architecture
The transport for file transfer is WebRTC data channels. The application itself is an isomorphic app built with `Nest.js` and `socket.io`. Backend service required for initializing connection between peers. To temporarily store the data and synchronize `socket.io` instances, Redis is used. The simplified schema below (networking, security groups, etc. non-present here, but you can refer `terraform` definition for those details):

**Note.** Two EC2 instances in autoscaling group here are mainly used for better availability. Application Load Balancer support WS protocol; that's why it's used instead of Classic one.
Deployment is organized with CodePipeline, but set up isn't a part of `terraform` definition.
# UI/UX
Application design created by [Pavel Koval](https://www.linkedin.com/in/pavel-koval-866a1b84/)