[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82839":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":37,"readmeContent":38,"aiSummary":39,"trendingCount":16,"starSnapshotCount":16,"syncStatus":40,"lastSyncTime":41,"discoverSource":42},82839,"altersend","denislupookov\u002Faltersend","denislupookov","Send files directly between devices over the internet - no cloud, no servers, no size limits.","https:\u002F\u002Faltersend.com\u002F",null,"TypeScript",484,29,4,11,0,73,240,306,271,94.34,"Other",false,"main",[26,27,28,29,30,31,32,33,34,35,36],"cross-platform","data-transfer","decentralized","file-sharing","file-transfer","hole-punching","open-source","p2p","peer-to-peer","privacy","privacy-tools","2026-06-12 04:01:39","\u003Cdiv align=\"center\">\n  \u003Cimg src=\"assets\u002Faltersend-logo.png\" alt=\"AlterSend\" width=\"380\" \u002F>\n\n  ### File transfer without the cloud.\n\n  Files go directly between your devices — end-to-end encrypted, no accounts, no servers, no limits.\n\n  [![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache--2.0-blue.svg)](LICENSE)\n  [![Platforms](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatforms-macOS%20%7C%20Windows%20%7C%20Linux%20%7C%20iOS%20%7C%20Android-lightgrey)](#download)\n\n  [Website](https:\u002F\u002Faltersend.com) · [Download](https:\u002F\u002Faltersend.com\u002Fdownload) · [Discord](https:\u002F\u002Fdiscord.gg\u002FR6tmrk85Vx)\n\n  \u003Cbr\u002F>\n\n  \u003Cimg src=\"assets\u002Fdesktop-example.png\" alt=\"AlterSend desktop\" width=\"520\" align=\"middle\" \u002F>\n  &nbsp;\n  \u003Cimg src=\"assets\u002Fmobile-example.png\" alt=\"AlterSend mobile\" width=\"240\" align=\"middle\" \u002F>\n\n\u003C\u002Fdiv>\n\n---\n\n## Contents\n\n- [About](#about)\n- [Features](#features)\n- [Download](#download)\n- [How it works](#how-it-works)\n- [For developers](#for-developers)\n  - [Prerequisites](#prerequisites)\n  - [Setup](#setup)\n  - [Run](#run)\n  - [Build](#build)\n  - [Project structure](#project-structure)\n  - [Tech stack](#tech-stack)\n  - [Crash reporting](#crash-reporting)\n- [Contributing](#contributing)\n- [Security](#security)\n- [License](#license)\n\n## About\n\nAlterSend is a free, open-source app for sending files directly between your devices — no cloud, no uploads, no size limits. Files transfer peer-to-peer and are end-to-end encrypted; nothing is ever stored on a server.\n\nWhy use WeTransfer, Dropbox, or Google Drive when you can send files directly — instantly, privately, with no upload costs and no limits?\n\n## Features\n\n- **No accounts** — no signup, no login, no email address required\n- **No servers** — files transfer directly device-to-device, nothing stored in the cloud\n- **End-to-end encrypted** — only your devices can read your files, always\n- **No file size limit** — send a 100 MB photo or 500 GB video archive, same experience\n- **Cross-platform** — macOS, Windows, Linux, iOS, Android\n- **Works everywhere** — local network or across continents, same code path\n- **Open source** — Apache-2.0, audit every line yourself\n\n## Download\n\nGet the latest release from [altersend.com\u002Fdownload](https:\u002F\u002Faltersend.com\u002Fdownload) or directly from the table below.\n\n| Platform | Download |\n|---|---|\n| **Windows** | [Microsoft Store](https:\u002F\u002Fapps.microsoft.com\u002Fdetail\u002F9NHLK9GLVDLW) (signed) · [EXE installer](https:\u002F\u002Fgithub.com\u002Fdenislupookov\u002Faltersend\u002Freleases\u002Flatest) |\n| **macOS** | [DMG — Apple Silicon](https:\u002F\u002Fgithub.com\u002Fdenislupookov\u002Faltersend\u002Freleases\u002Flatest) · [DMG — Intel](https:\u002F\u002Fgithub.com\u002Fdenislupookov\u002Faltersend\u002Freleases\u002Flatest) |\n| **Linux** | [AppImage](https:\u002F\u002Fgithub.com\u002Fdenislupookov\u002Faltersend\u002Freleases\u002Flatest) |\n| **Android** | [Google Play](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.altersend.mobile) · [APK](https:\u002F\u002Fgithub.com\u002Fdenislupookov\u002Faltersend\u002Freleases\u002Flatest) |\n| **iOS** | [App Store](https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Faltersend-file-transfer\u002Fid6772496271) |\n\n> **macOS `.dmg`** — signed with our Developer ID but not yet notarized by Apple, so macOS will show \"AlterSend cannot be opened because the developer cannot be verified\" on first launch. **Right-click the app → Open → Open** to bypass Gatekeeper (one time only). Notarization is in progress.\n\n> **Windows `.exe`** — not yet signed, so Windows will show \"Windows protected your PC\" on first run. Click **More info → Run anyway** to install. The Microsoft Store version is signed and avoids this warning.\n\n## How it works\n\n1. Open AlterSend on both devices\n2. One device shows a **join code** (or QR)\n3. The other scans or types it\n4. Files transfer directly — peer to peer\n\n```\n   ┌─────────┐          encrypted P2P          ┌─────────┐\n   │ Device  │ ◄──────────────────────────────► │ Device  │\n   │   A     │     direct, no middleman         │   B     │\n   └─────────┘                                  └─────────┘\n        ▲                                            ▲\n        │       peer discovery via Hyperswarm        │\n        └────────────────────────────────────────────┘\n                   (DHT, no central server)\n```\n\nDiscovery uses [Hyperswarm](https:\u002F\u002Fgithub.com\u002Fholepunchto\u002Fhyperswarm) (a DHT) — once peers find each other, no central infrastructure is involved. Transfers run over [Hyperdrive](https:\u002F\u002Fgithub.com\u002Fholepunchto\u002Fhyperdrive): encrypted, content-addressed, resumable.\n\n---\n\n## For developers\n\n### Prerequisites\n\n- Node.js 20+\n- npm 10+\n- Xcode (iOS) or Android Studio (Android)\n\n### Setup\n\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Fdenislupookov\u002Faltersend.git\ncd altersend\nnpm install\n\ncp apps\u002Fdesktop\u002F.env.example apps\u002Fdesktop\u002F.env\ncp apps\u002Fmobile\u002F.env.example apps\u002Fmobile\u002F.env\n# All env vars are optional in dev — the app runs without them.\n```\n\n### Run\n\n```sh\nnpm run dev            # desktop (Electron)\nnpm run mobile:start   # mobile (Expo)\n```\n\n### Build\n\n```sh\nnpm run desktop:build  # packages + desktop app\n```\n\nPlatform installers (`.dmg`, `.exe`, `.AppImage`) are produced by the release CI workflow — trigger manually from the Actions tab.\n\n### Project structure\n\n```\napps\u002F\n  desktop\u002F    Electron app — main + renderer + Bare worklet\n  mobile\u002F     React Native \u002F Expo app\npackages\u002F\n  core\u002F       P2P protocol — Hyperswarm, Hyperdrive, RPC\n  domain\u002F     State management — Zustand store, business logic\n  components\u002F Cross-platform UI — React Strict DOM + Tailwind\ndocs\u002F\n  architecture.md   Full system overview\n```\n\nSee [docs\u002Farchitecture.md](docs\u002Farchitecture.md) for data flow and inter-process boundaries.\n\n### Tech stack\n\n[Electron](https:\u002F\u002Felectronjs.org) · [React Native](https:\u002F\u002Freactnative.dev) · [Expo](https:\u002F\u002Fexpo.dev) · [Bare](https:\u002F\u002Fbare.pears.com) · [Hyperswarm](https:\u002F\u002Fgithub.com\u002Fholepunchto\u002Fhyperswarm) · [Hyperdrive](https:\u002F\u002Fgithub.com\u002Fholepunchto\u002Fhyperdrive) · [React Strict DOM](https:\u002F\u002Fgithub.com\u002Ffacebook\u002Freact-strict-dom) · [Tailwind](https:\u002F\u002Ftailwindcss.com) · [Zustand](https:\u002F\u002Fgithub.com\u002Fpmndrs\u002Fzustand)\n\n### Crash reporting\n\nCrash and error reporting uses [Sentry](https:\u002F\u002Fsentry.io). It is **opt-in and off by default** — nothing is sent until you enable it in the app's settings.\n\n- **Where it runs.** Desktop has two Sentry SDKs: `@sentry\u002Felectron\u002Fmain` for native main-process crashes and `@sentry\u002Felectron\u002Frenderer` for renderer JS \u002F transfer errors. Mobile uses `@sentry\u002Freact-native`. The Bare worklet has no Sentry — it pipes its logs to the renderer over RPC instead.\n- **Opt-in state.** Stored locally: desktop uses the `localStorage` key `altersend.crash-reporting.enabled`; mobile uses a marker file in the app document directory. The main process initializes Sentry early (before `app` ready) but gates submission in `beforeSend`; the renderer pushes the current preference over the `sentry:setEnabled` IPC channel.\n- **PII scrubbing.** `beforeSend` rewrites home-directory paths to `~` in exception messages and breadcrumbs, so usernames and file paths don't leak into stack traces.\n- **DSNs come from env vars** — `SENTRY_DSN` (desktop main, baked in at build by `gen-sentry-dsn.cjs`), `VITE_SENTRY_DSN` (desktop renderer), `EXPO_PUBLIC_SENTRY_DSN` (mobile). All are optional; see the `.env.example` files. **Community and self-built binaries ship without DSNs, so Sentry is a complete no-op and no telemetry is ever sent.**\n\n---\n\n## Contributing\n\nPull requests welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for setup, code style, and the PR process.\n\n## Security\n\nFound a vulnerability? Follow the disclosure process in [SECURITY.md](SECURITY.md) — please don't open a public issue.\n\n## License\n\n[Apache-2.0](LICENSE) © AlterSend\n","AlterSend 是一款用于直接在设备间传输文件的应用程序，无需借助云服务或服务器，且无文件大小限制。其核心功能包括点对点文件传输、端到端加密、无需账户注册以及跨平台支持（macOS、Windows、Linux、iOS 和 Android）。该应用利用了P2P技术，确保文件仅在发送方和接收方之间流转，保障用户隐私安全。适用于需要快速、私密地分享大文件的场景，如个人间的文件共享或是小团队内部的数据交换，尤其适合对数据隐私有较高要求的用户。",2,"2026-06-11 04:09:23","CREATED_QUERY"]