A Nostr social platform built with relay.tools, InfernoJS, and Blazecn.
mycelium.social is a complete Nostr relay hosting and social platform. The relay infrastructure is built on relay.tools — an open-source relay management stack — with every user-facing component rewritten using InfernoJS and Blazecn, our shadcn/ui-compatible component library.
The server-side relay infrastructure uses the relay.tools collection of services, each rewritten with a modern InfernoJS + Blazecn frontend:
| Service | Upstream | What we changed |
|---|---|---|
| relaycreator | relaytools/relaycreator | Rewrote the Next.js frontend as an InfernoJS SPA with Blazecn. Express API server retained and extended. |
| strfry | hoytech/strfry | Nostr relay daemon — used as-is. |
| spamblaster | relaytools/spamblaster | strfry write-policy plugin — used as-is. |
| interceptor | relaytools/interceptor | WebSocket proxy handling NIP-42 auth and relay routing — used as-is. |
| cookiecutter | relaytools/cookiecutter | Generates per-relay strfry configs and HAProxy rules from the relaycreator API. |
- InfernoJS — React-compatible UI library, extremely fast virtual DOM
- Blazecn — shadcn/ui-compatible component library ported to InfernoJS
- Tailwind CSS v4 — utility-first CSS with PostCSS
- Kaji — InfernoJS-native Nostr protocol library
- Bun — JavaScript runtime, bundler, and package manager
- Hono — lightweight web framework (social client server)
- Express — API server (relaycreator)
- Prisma — ORM for MariaDB
- HAProxy — TLS termination, WebSocket routing, wildcard subdomain handling
- MariaDB — relay metadata, user accounts, ACLs
- systemd-nspawn — lightweight containers for service isolation
- OvenMediaEngine — RTMP ingest and HLS/WebRTC streaming
- nos2x-frog — NIP-07 browser extension for Nostr key management
- Global and Following feed modes with live updates
- Post creation, replies, reactions, reposts
- User profiles with follow/unfollow (NIP-02)
- Rich content rendering (links, images, video, hashtags, nostr: entities)
- Notifications (reactions, replies, mentions, reposts)
- Relay management with live connection status
- Relay hosting with per-relay ACLs, write policies, and moderation
- Hashtag feeds
- Raw event inspector
- NIP-07 browser extension authentication
- Component library documentation at
/docs
cd mycelium
bun install
bun run build
bun run devThe app starts at http://localhost:3000.
mycelium.social/
├── mycelium/ # Main social client
│ ├── public/ # Static assets
│ ├── src/
│ │ ├── app/
│ │ │ ├── components/ # Layout, Feed, PostCard, Compose, Login
│ │ │ ├── pages/ # Home, PostDetail, UserProfile, Notifications, etc.
│ │ │ ├── store/ # State management (auth, relay, feed, contacts)
│ │ │ └── ui/ # Blazecn components (Button, Card, Input, etc.)
│ │ ├── nostr/ # Kaji protocol library (local mirror)
│ │ ├── server/ # Hono server
│ │ └── styles/ # Tailwind CSS v4 + PostCSS
│ ├── build.ts # Bun build script
│ └── package.json
├── live/ # Live streaming frontend (NIP-53)
├── relaycreator/ # Relay management (fork of relay.tools)
├── nos2x-fox/ # Browser extension (nos2x-frog)
└── blazecn/ # Component library
| Repo | Description |
|---|---|
| relay.tools | Upstream relay management stack |
| blazecn | shadcn/ui-compatible component library for InfernoJS |
| kaji | InfernoJS-native Nostr protocol library |
| nos2x-frog | Nostr signer browser extension |
| mycelium-android | Native Android Nostr client |
| relaycreator | Our fork of relay.tools/relaycreator with InfernoJS frontend |
MIT — see NOTICE.md for third-party license details.