LAYER.systems — 一款以桌面形態呈現的 Nostr 客戶端:資訊流、個人檔案、討論串與長篇文章皆以視窗開啟,可移動、調整大小,並排並列顯示。
AI 翻譯
LAYER.systems — a Nostr client shaped like a desktop: feeds, profiles, threads and long-form articles open as windows you can move, resize and keep side by side.
社交TypeScript · CSSGitHub @layer-systems上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
LAYER.systems is a Nostr client designed like a desktop operating system. Instead of
navigating between pages, you open apps in windows that can be moved, resized, stacked,
minimized, and kept open side by side. This makes it possible to read a thread, inspect a
profile, and keep your feed available at the same time.
The app is for people who use Nostr and want a focused, multitasking-friendly interface,
as well as contributors interested in building Nostr applications with React and
TypeScript.檢視完整 README ↗LAYER.systems is a Nostr client designed like a desktop operating system. Instead of navigating between pages, you open apps in windows that can be moved, resized, stacked, minimized, and kept open side by side. This makes it possible to read a thread, inspect a profile, and keep your feed available at the same time.
The app is for people who use Nostr and want a focused, multitasking-friendly interface, as well as contributors interested in building Nostr applications with React and TypeScript.
npub, note, nevent, nprofile, and naddr as links.LAYER.systems reads and writes Nostr events through relays. It does not provide a centralized social database; your relays and signer remain the source of your Nostr data. Some features require a signed-in account, and availability of content depends on the relays you use.
nvm install followed by nvm use reads .nvmrc)Node.js 26.12.1 is the minimum version containing the
October 21, 2026 security fixes.
GitHub Actions reads the patched version from .nvmrc; GitLab CI uses the matching
Node.js image. Update existing local Node.js installations before running development
or build commands. Production serves static files on GitHub Pages and does not run
a Node.js application server.
Clone the repository, install dependencies, and start the Vite development server:
git clone https://github.com/layer-systems/website.git
cd website
npm install
npm run dev
The development server listens on http://localhost:8080. The app has no required environment variables; relay and media-server settings are managed in the app.
Useful commands:
npm run test # Type-check, lint, run Vitest, and create a production build
npm run build # Create the production bundle in dist/
npm run build also creates dist/404.html, which supports client-side routes when the
build is deployed as a static site.
The repository includes a GitHub Actions workflow in
.github/workflows/deploy.yml. It runs on pushes to
main (or manually from the Actions tab), builds the app with the Node.js version in
.nvmrc, and deploys dist/ to GitHub Pages.
For another static host, run npm run build and publish the generated dist/ directory.
Configure the host to serve dist/404.html for unknown paths so direct NIP-19 links
continue to load the client application.
The application is organized into three main layers:
src/os/ Window manager, persistence, layout, and keyboard shortcuts
src/components/os/ Desktop shell, menu bar, windows, and mobile app shell
src/apps/ Nostr and system apps rendered inside windows
src/components/ Shared UI, authentication, and Nostr components
src/hooks/ Data access and application hooks
Apps are registered in src/os/registry.ts. Each app is lazy
loaded and receives a small window-oriented contract, so adding an app normally does not
require changing the router. Read the app guide before adding one.
For protocol reference, see the Nostr protocol documentation.
npm install.npm run test.When working with Nostr content, treat events, URLs, and profile metadata as untrusted
input. Follow the validation and URL-sanitization patterns in
docs/nostr.md, and do not use any in TypeScript.
LAYER.systems is dedicated to the public domain. You are free to copy, modify, distribute, and use it for any purpose, commercial or non-commercial.