No description
- Svelte 57.9%
- TypeScript 41%
- Nix 0.4%
- HTML 0.4%
- CSS 0.2%
- Other 0.1%
| e2e | ||
| src | ||
| static | ||
| .envrc | ||
| .gitignore | ||
| .npmrc | ||
| CLAUDE.md | ||
| flake.lock | ||
| flake.nix | ||
| package.json | ||
| playwright.config.ts | ||
| pnpm-lock.yaml | ||
| README.md | ||
| svelte.config.js | ||
| tsconfig.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
Relay Manager
Web-based admin panel for managing Nostr relays that support NIP-86 (Relay Management API).
Features
- Dashboard — Relay info, stats, and status overview
- Event browser — Browse and inspect stored events
- Pubkey management — View and manage known pubkeys
- Moderation — Ban/unban pubkeys and events
- Access control — Configure relay allow/deny lists
- Admin management — Add or remove relay administrators
- Relay-to-relay sync — Sync events between relays
- Settings — Relay configuration and schema management
Tech Stack
- SvelteKit + Svelte 5 with TypeScript
- DaisyUI 5 + Tailwind CSS 4
- applesauce libraries (accounts, core, loaders, relay, signers)
- nostr-tools
Getting Started
Prerequisites
- Node.js 22+ and pnpm (or use
nix developwith the included flake)
Install & Run
pnpm install
pnpm dev
Build
pnpm build
pnpm preview # preview the production build
Authentication
On the login screen, enter a relay URL and choose a signing method:
- Extension (NIP-07) — Browser extension like nos2x or Alby
- Bunker (NIP-46) — Remote signing via a bunker URL
- nsec — Direct private key entry (stored in memory only, never persisted)
API calls to the relay are authenticated with NIP-98 HTTP auth events.
Development
pnpm dev # start dev server
pnpm build # production build
pnpm test # run unit tests (vitest)
pnpm test:e2e # run e2e tests (playwright)
pnpm check # svelte-check + type checking
pnpm format # format with prettier
pnpm lint # check formatting
Nix
A flake.nix is included for reproducible development environments with Node.js 22, pnpm, and Playwright:
nix develop
Related Projects
- amb-relay — Nostr relay for AMB educational metadata (kind 30142)
- calendar-relay — Nostr relay for NIP-52 calendar events
- standard-86-relay — Reference NIP-86 relay implementation