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.