You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 6, 2026. It is now read-only.
Developer Experience — Reactive by default, less boilerplate
PWA Support — Excellent service worker integration
SSR/SPA Flexibility — Can deploy as static SPA or server-rendered
Ecosystem — Strong TypeScript support, active community
Why a Private Relay?
We operate a private relay because:
Control — Guaranteed deletion, moderation capabilities
Performance — Optimised for our use case
Privacy — Data stays within our infrastructure
Features — Custom NIP-29 group implementation
Core Concepts
Identity
Users are identified by a public/private key pair:
Public key (npub) — The user's identity, shareable
Private key (nsec) — Proves ownership, never shared
Recovery phrase — BIP-39 mnemonic that regenerates keys
Events
Everything in Nostr is an event — a signed JSON object:
interfaceNostrEvent{id: string;// SHA256 hash of serialised eventpubkey: string;// Author's public keycreated_at: number;// Unix timestampkind: number;// Event type (1=note, 4=DM, etc.)tags: string[][];// Metadata tagscontent: string;// Event contentsig: string;// Schnorr signature}
Zones
The platform organises content into zones (categories):
Minimoonoir — Social community (cohort: moomaa-tribe)
DreamLab — Business/creative (cohort: business)
Family — Private family space (cohort: family)
Each zone has its own:
Sections (sub-categories)
Channels (NIP-28/29 groups)
Branding (colours, images)
Access control
Development Workflow
Local Development
# Clone the repository
git clone https://github.com/your-org/nostr-bbs.git
cd nostr-bbs
# Install dependencies
npm install
# Set up environment
cp .env.example .env.local
# Edit .env.local with your configuration# Start development server
npm run dev
# Open http://localhost:5173
Testing
# Run unit tests
npm run test# Run integration tests
npm run test:integration
# Run type checking
npm run check
# Run linting
npm run lint
Building
# Build for production
npm run build
# Preview production build
npm run preview