Squalk is a forum and real-time chat frontend built on the Nostr protocol, designed to run as either a single-forum "simple" mode or a multi-room "full" mode; each forum shows a chat pane in the right-hand sidebar for quick member interaction. It implements NIP-29 and NIP-7D, requires a NIP-29-capable relay to host groups and a Blossom server for media uploads (Pyramid is recommended), and uses admin pubkeys declared via NIP-29 to gate which long-form events are trusted for site content. The UI and tooling are built with SvelteKit and typical Node toolchains.
Configuration and customization are driven entirely by browser-readable environment variables prefixed PUBLIC_, with key settings including PUBLIC_RELAY_URL (required), PUBLIC_MODE/PUBLIC_GROUP_ID, publishable UI labels, optional Blossom upload URL, and several SSR controls (PUBLIC_SSR, PUBLIC_SSR_WARM, cache timing) that select static vs server-rendered builds and influence caching/preview behavior. Content fragments (sidebar resources and homepage/contacts partials) are authored as NIP-23 kind 30023 events using specific tags (t: squalk-resource or squalk-partial, d: slug, title, position); newest admin-authored events win and re-publishing updates resources. Development uses npm scripts (dev, build, build-ssr, preview) and deployment supports a supplied justfile that uploads builds, manages a Node service (Node 22+), reverse proxy configuration, and Cloudflare cache rules for server-rendered snapshots.
Summary generated by AI from the linked article. hn.today is not affiliated with Hacker News or Y Combinator.