Adds a "Via AnyDrop" flow for senders who need to reach someone not present on the mesh. The file is sealed client-side (XChaCha20-Poly1305), uploaded directly to an in-cluster MinIO bucket via a presigned PUT, and handed off to the recipient as a URL whose fragment carries the key. The server only ever sees ciphertext, opaque metadata blobs, and sizes. - server: transfers table (drizzle migration), /api/transfers CRUD + consume endpoint, presigned PUT/GET via @aws-sdk/client-s3, cleanup loop that purges expired + exhausted blobs. - web: @noble/ciphers sealFile/openFile, high-level sendCloud/receive helpers, CloudSharePanel on Home, /r/:id receive page, /inbox page for signed-in users (sent + received tabs). - k8s: MinIO StatefulSet with bucket-init initContainer, S3 env vars on the server Deployment (credentials pulled from minio-credentials Secret). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
42 lines
1.0 KiB
JSON
42 lines
1.0 KiB
JSON
{
|
|
"name": "@anydrop/web",
|
|
"version": "1.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc -b && vite build",
|
|
"preview": "vite preview",
|
|
"typecheck": "tsc --noEmit"
|
|
},
|
|
"dependencies": {
|
|
"@anydrop/shared": "workspace:*",
|
|
"@noble/ciphers": "^2.2.0",
|
|
"@noble/hashes": "^2.2.0",
|
|
"events": "^3.3.0",
|
|
"process": "^0.11.10",
|
|
"qrcode.react": "^4.2.0",
|
|
"react": "^18.3.1",
|
|
"react-dom": "^18.3.1",
|
|
"react-router-dom": "^7.5.1",
|
|
"simple-peer": "^9.11.1",
|
|
"zustand": "^5.0.5"
|
|
},
|
|
"devDependencies": {
|
|
"@types/react": "^18.3.20",
|
|
"@types/react-dom": "^18.3.6",
|
|
"@types/simple-peer": "^9.11.8",
|
|
"@vitejs/plugin-react": "^4.4.1",
|
|
"autoprefixer": "^10.4.21",
|
|
"postcss": "^8.5.3",
|
|
"tailwindcss": "^3.4.17",
|
|
"vite": "^6.3.3",
|
|
"vite-plugin-node-polyfills": "^0.26.0",
|
|
"vite-plugin-pwa": "^1.0.0",
|
|
"workbox-precaching": "^7.3.0",
|
|
"workbox-routing": "^7.3.0",
|
|
"workbox-strategies": "^7.3.0",
|
|
"workbox-window": "^7.3.0"
|
|
}
|
|
}
|