https://github.com/collapsinghierarchy/noisytransferapp
PWA for the noisytransfer repository
https://github.com/collapsinghierarchy/noisytransferapp
Last synced: 4 months ago
JSON representation
PWA for the noisytransfer repository
- Host: GitHub
- URL: https://github.com/collapsinghierarchy/noisytransferapp
- Owner: collapsinghierarchy
- License: agpl-3.0
- Created: 2025-07-20T08:54:22.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-07-20T09:04:58.000Z (4 months ago)
- Last Synced: 2025-07-20T11:18:30.965Z (4 months ago)
- Language: JavaScript
- Size: 2.31 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# NoisyTransfer App
A simple e2e encrypted transfer built with **Quasar** (Vue.js) on the frontend and a Go WebSocket backend [noisytransfer](https://github.com/collapsinghierarchy/noisytransfer). Users share a UUID `appId` to join a room and send e2ee data in real time.
## Features
* **Index Page**: Choose if you want to send a file yourself or to request a file from someone else.
* **Send Page**: Encrypt and send e2ee data blobs over WebSockets.
* **Receive Page**: Prepare everything for others to send you e2ee files.
* **WebSocket communication**: Single `/ws?appID=…` handshake, then bidirectional messaging. The e2ee is realized via hybrid HPKEs (PQC) from [hpke-js](https://github.com/dajiaji/hpke-js), a Short Authentication String (SAS) and a commit-then-reveal protocol to protect against a savvy MitM. (Documentation is ONW)
## Repository Structure
```text
├── src/
│ ├── layouts/
│ ├── MainLayout.vue
│ ├── libs/
│ ├── noisy.js # Contains the actual protocol
│ ├── pages/
│ │ ├── IndexPage.vue # Navigation between sending and requesting files.
│ │ ├── SendPage.vue # UI to send encrypted blobs
│ │ └── ReceivePage.vue # UI to receive/decrypt blobs from the SendPage.
│ │ └── RequestPage.vue # UI for preparing a link to receive a file.
│ │ └── SubmitPage.vue # UI for submitting a file to a request link.
```
## Prerequisites
* **Node.js** v16+ and **npm** or **yarn**
* **Quasar CLI** (`npm i -g @quasar/cli`)
* **Go** 1.18+ (for backend)
## Frontend Setup
1. **Install dependencies**
```bash
cd src
yarn install # or npm install
```
2. **Configure WebSocket URL**
In `src/libs/nois.js` set your backend URL:
```js
const WS_BASE = import.meta.env.VITE_WS_URL || (
(location.protocol === 'https:' ? 'wss' : 'ws') + '://' + 'localhost' + ':1234'
)
```
3. **Start development server**
```bash
quasar dev
```
quasar will tell you what port the app is on.
## Backend Setup (Go)
Check [noisytransfer](https://github.com/collapsinghierarchy/noisytransfer)
## Notes
* Uses **Web Crypto API** and [hpke-js](https://github.com/dajiaji/hpke-js) in the client.
* Stateless backend; no persistence; on purpose.