[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81376":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":13,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":14,"starSnapshotCount":14,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},81376,"echo","ad3lre\u002Fecho","ad3lre","Echo is an open, privacy-minded platform for communities: real-time chat, voice and video (LiveKit), servers and channels, DMs, roles, and the workflows people expect from a modern team or social space without treating your community as ad inventory.",null,"TypeScript",42,3,1,0,4,42.71,"GNU Affero General Public License v3.0",false,"release\u002F1.0.0",true,[],"2026-06-12 04:01:33","# Echo\n\n**Echo** is an open, privacy-minded platform for **communities**: real-time **chat**, **voice and video** (LiveKit), servers and channels, DMs, roles, and the workflows people expect from a modern team or social space—without treating your community as ad inventory.\n\nYou can **run it yourself** (self-host), **fork and extend** it (AGPL), or use it as the basis for a product you control end-to-end.\n\n## What Echo is\n\nEcho is a **full-stack communication app**: a Vue 3 SPA, a Node.js (**Fastify**) API, **Socket.IO** for realtime, **PostgreSQL** for durable data, optional **NATS** for multi-process scaling, and **native clients** (Tauri) where you want an installed app. A separate **marketing** site (Astro) and optional **Discord bridge \u002F import** tooling exist for migration and interoperability—not as the core identity of the product.\n\nThe codebase is organized for **operators and contributors**: typed shared contracts between client and server, documented API behavior under [`docs\u002Fcontracts\u002F`](.\u002Fdocs\u002Fcontracts\u002F), and runbooks under [`docs\u002Foperations\u002F`](.\u002Fdocs\u002Foperations\u002F).\n\n## Why Echo\n\n- **Privacy and consent by design** — built around clear boundaries for data, sessions, and what the server is allowed to assume about users.\n- **You own your deployment** — no mandatory third-party control plane; configure auth, storage, voice, and edge the way your threat model requires.\n- **Realtime-first** — chat and presence are first-class; voice\u002Fvideo follow a documented LiveKit path with production checklists in-repo.\n- **Serious engineering guardrails** — contract tests, RBAC and snowflake guards in CI, observability hooks, and a single [production readiness rollup](.\u002Fdocs\u002Freviews\u002FSTATUS_AND_PRODUCTION_READINESS.md) so progress is inspectable, not hand-wavy.\n- **Installable where your users are** — **PWA** for the web and **Tauri** builds for desktop and Android (see [`releases\u002F`](.\u002Freleases\u002FREADME.md)).\n\n## Open source\n\nEcho is **open source** under the [**GNU Affero General Public License v3.0 only**](.\u002FLICENSE) (AGPL). Contributions, issues, and pull requests: [CONTRIBUTING.md](.\u002FCONTRIBUTING.md), [CODE_OF_CONDUCT.md](.\u002FCODE_OF_CONDUCT.md), [`.github\u002FSECURITY.md`](.\u002F.github\u002FSECURITY.md). **Day-to-day setup:** [docs\u002FDEVELOPMENT.md](.\u002Fdocs\u002FDEVELOPMENT.md). **Documentation index:** [docs\u002FREADME.md](.\u002Fdocs\u002FREADME.md).\n\n**CI (GitHub Actions)** — badges target this fork’s default GitHub branch (`release\u002F1.0.0`). Change `ad3lre\u002Fecho` and `branch=…` in the URLs if your owner\u002Frepo or branch name differs:\n\n[![Echo format check](https:\u002F\u002Fgithub.com\u002Fad3lre\u002Fecho\u002Factions\u002Fworkflows\u002Fecho-format-ci.yml\u002Fbadge.svg?branch=release\u002F1.0.0)](https:\u002F\u002Fgithub.com\u002Fad3lre\u002Fecho\u002Factions\u002Fworkflows\u002Fecho-format-ci.yml)\n[![Echo backend checks](https:\u002F\u002Fgithub.com\u002Fad3lre\u002Fecho\u002Factions\u002Fworkflows\u002Fecho-backend-ci.yml\u002Fbadge.svg?branch=release\u002F1.0.0)](https:\u002F\u002Fgithub.com\u002Fad3lre\u002Fecho\u002Factions\u002Fworkflows\u002Fecho-backend-ci.yml)\n\nRelease and signing workflows may need **repository secrets** on the canonical fork; forks still get format and backend checks when relevant paths change.\n\n## Project structure\n\n- **`frontend\u002F`** — Vue 3 + Vite SPA (Pinia, Vue Router, TypeScript).\n- **`backend\u002F`** — Fastify REST API, Socket.IO, Postgres integration, auth and Echo domain logic.\n- **`shared\u002F`** — Shared TypeScript types and constants across client and server.\n- **`scripts\u002F`** — Migrations, seeds, deploy helpers, asset pipelines.\n- **`marketing\u002F`** — Astro site for public pages.\n- **`bot\u002F`**, **`voice-sidecar\u002F`**, **`src-tauri\u002F`** — Optional Discord tooling, voice sidecar, and native shells.\n\n## Stack (summary)\n\n| Layer    | Choices                                                                                                                                                                                              |\n| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Frontend | Vue 3, Vite, Pinia, Vue Router, TypeScript                                                                                                                                                           |\n| Backend  | Node.js, Fastify, Socket.IO, TypeScript                                                                                                                                                              |\n| Data     | PostgreSQL; optional **NATS** for Socket.IO adapter when **`NATS_URL`** is set ([realtime scaling](.\u002Fdocs\u002Finfra\u002Frealtime-scaling.md); broader JetStream stance in [STACK](.\u002Fdocs\u002Foverview\u002FSTACK.md)) |\n| Voice    | LiveKit (session + webhooks + client); ops in [`docs\u002Foperations\u002Flivekit-production.md`](.\u002Fdocs\u002Foperations\u002Flivekit-production.md)                                                                     |\n\n## Getting started\n\n- **Install from the repo root** (`npm ci` or `npm install`). Root install is required (workspaces + devDependencies such as **`sharp`** for Twemoji assets). Installing only under `frontend\u002F` is not enough for `npm run dev` \u002F `npm run build`.\n- **Node.js 22.13+** (see `package.json` `engines`). For `sharp`, see [sharp install](https:\u002F\u002Fsharp.pixelplumbing.com\u002Finstall).\n- **Local stack:** `npm run db:up` then `npm run dev` (see `.env.example`). Postgres-like behavior: **`ECHO_BACKEND_STORAGE=postgres`** and **`DATABASE_URL`**.\n- **Production-like local bundle:** `npm run prod` (full build + API on **:3000** + Vite preview on **:4173**). Skip rebuild: `npm run prod:serve`.\n- **Backend only:** `npm run build -w backend` (or root `npm run build`) before `npm start` (`node dist\u002Fbackend\u002Fsrc\u002Findex.js`).\n- **Production:** `DATABASE_URL` required; **`\u002Fapi\u002Fv1\u002Fmock`** is not registered in production.\n- **VPS \u002F bare metal:** [`docs\u002Foperations\u002Flinux-vps-deployment.md`](.\u002Fdocs\u002Foperations\u002Flinux-vps-deployment.md).\n- **Seed dev data (API running):** `npm run seed:dev`.\n\n### Progressive Web App\n\nThe SPA ships a [manifest](https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FManifest), themed icons under `frontend\u002Fpublic\u002Ficons\u002F` (regenerated on `npm run build -w frontend` via `scripts\u002Fgenerate-pwa-icons.mjs`), and a minimal [service worker](https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FProgressive_web_apps\u002FGuides\u002FMaking_PWAs_installable) (`frontend\u002Fpublic\u002Fsw.js`). The worker registers in dev and production so Chrome can offer **Install Echo** on `npm run dev` (e.g. **http:\u002F\u002Flocalhost:8080**).\n\n- **HTTPS:** production installability needs a secure context; terminate TLS at your proxy and forward **`X-Forwarded-Proto`** when HTTPS enforcement is on (see `registerHttpsEnforcementIfConfigured` and [realtime-scaling](.\u002Fdocs\u002Finfra\u002Frealtime-scaling.md)).\n- **Verify:** Vite dev or `npm run build -w frontend && npm run preview -w frontend` → Chrome → **Install Echo**. Hard-reload once if the prompt is missing.\n- **Icons only:** `npm run pwa:icons` from repo root.\n\n## Native apps (Tauri)\n\nWindows, macOS, Linux, and Android — **paths, commands, CI pointers** in [`releases\u002FREADME.md`](.\u002Freleases\u002FREADME.md). Signing, stores, and CORS depth live under [`docs\u002Foperations\u002F`](.\u002Fdocs\u002Foperations\u002F).\n\n## Contributing\n\nWe welcome contributions on **GitHub**. Start with [docs\u002FDEVELOPMENT.md](.\u002Fdocs\u002FDEVELOPMENT.md), then [CONTRIBUTING.md](.\u002FCONTRIBUTING.md).\n\n## Third-party assets\n\nIcons and emoji: [terms\u002FATTRIBUTIONS.md](.\u002Fterms\u002FATTRIBUTIONS.md).\n\n## License\n\n**GNU Affero General Public License v3.0 only** — see [`LICENSE`](.\u002FLICENSE).\n\nIf you **modify** this program and **offer** it as a **network service**, the AGPL requires offering **Corresponding Source** to users of that service under the same license. Distributed **binaries** must also satisfy source-offer rules. See the [GNU AGPL howto](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fagpl-3.0.html) and [FSF FAQ (AGPL)](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-faq.en.html#AGPLv3).\n\n**Downstream:** app stores and notarized bundles may add their own terms; packagers remain responsible for AGPL compliance.\n","Echo 是一个注重隐私的社区平台，提供实时聊天、语音和视频通话（基于 LiveKit）、服务器和频道管理、私信、角色等功能。项目采用 TypeScript 编写，前端使用 Vue 3 构建单页应用，后端基于 Fastify 框架，并利用 Socket.IO 实现实时通信，PostgreSQL 用于数据存储，可选 NATS 支持多进程扩展，同时提供 Tauri 构建的原生客户端。Echo 适合需要自主控制部署环境、强调用户隐私保护以及寻求现代团队或社交空间解决方案的场景。此外，它遵循 AGPL v3.0 许可协议开源，支持自托管、分叉扩展或作为自有产品的基础。",2,"2026-06-11 04:04:50","CREATED_QUERY"]