Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 30 days 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 (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2023-04-06T09:06:57.000Z (almost 2 years ago)
- Last Synced: 2024-10-24T21:35:46.478Z (3 months ago)
- Topics: nextjs, nodejs, react, socket-io, webrtc
- Language: TypeScript
- Homepage: https://p2piper.com/
- Size: 628 KB
- Stars: 3
- Watchers: 4
- 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):
![Architecture diagram](./diagram.png)
**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/)