Squalk: an old-school forum engine built on Nostr (NIP-29 groups, NIP-7D threads)
1 points by daniele
1 points by daniele
I miss classic forums: slow, asynchronous threads that stay readable and searchable for years, instead of knowledge dissolving into chat scrollback. Squalk is my attempt to rebuild that on top of Nostr, an open protocol where users hold a keypair, posts are signed events, and interchangeable relays store and serve them, instead of a private database.
The design in short: a forum is a view over relay-hosted data. Rooms are groups as specified in NIP-29, threads are NIP-7D events, identity is the user's own keypair. The consequence I care about is that the software and the community are decoupled: any other client speaking the same specs (Flotilla, Nostrord) can read and write the same conversations, and if my deployment disappears the history and identities survive on the relay.
Technical bits that might interest this crowd: one SvelteKit codebase builds either as a static SPA or as a server-rendered Node app; the SSR mode renders only the anonymous view (no keys server-side) so threads are crawlable, with a stale-while-revalidate snapshot cache in front of the relay queries. Content is rendered as djot rather than markdown. Deployment is a NIP-29 relay (Zooid) plus one systemd unit.
Pilot community (real threads, browsable without an account): https://nostr-proto.org Test instance where you are welcome to make a mess: https://squalk-test.dtonon.com
Caveats: Nostr is niche, key management is still rough for non-enthusiasts, and relay-side moderation tooling is young.
Feedback on the architecture is welcome!