基于Nostr的Squalk论坛:传统论坛在现代开源协议上的新生
在当今快节奏的在线讨论环境中,我依然偏爱那种从容不迫、异步进行的热议。可读性强且便于检索的存档对我来说至关重要。大多数社区都已弃用论坛,转而拥抱群聊。随着Discord和Telegram群组的兴起,同样的问题被反复抛出,而宝贵的答案则淹没在信息的洪流中。
出于这种考虑,我开发了Squalk(可在 https://github.com/dtonon/squalk 获取源码),这是一个基于Nostr开放协议构建的经典论坛。Nostr协议本身就是一个社区,主要围绕协议展开讨论。
Nostr作为开放协议,具有几个值得关注的特性:
- 没有由单一中心实体控制的经典账户体系;用户使用密码学密钥对登录,身份和发布历史均可移植,同一密钥可在所有Nostr应用上使用。
- 论坛仅是托管在“中继”( relay )服务器上数据的一个视图,而中继本质上就是一个非常简单的服务器。任何遵循相同规范的客户端,如Flotilla或Nostrord,都可以读取和写入相同的对话。如果我的网站关闭,社区及其历史记录仍将存在。
- 复杂的Web服务器并非必需。Squalk可以构建为静态单页应用(SPA),也可以从同一代码库生成服务器端渲染的Node应用(SvelteKit);SSR模式的存在是为了使线程可被爬取并出现在搜索引擎中,这对于论坛来说至关重要。
我得承认,每个房间仍然有一个聊天侧边栏。我曾试图指出聊天会吞噬知识,但关键在于决定它被允许吞噬什么。快速构思、调试会话和零散的想法属于聊天,而值得保留的结论则以线程形式记录下来。侧边栏是故意设计的次要功能:它为论坛提供输入,而不是取代论坛。
Nostr虽然年轻,密钥管理对普通人来说仍然复杂,中继上的Moderation工具也亟待改进。但我认为缓慢的论坛动态实际上比它在Twitter克隆中的名声更适合该协议,因此我将继续探索这个想法。
欢迎对论坛和软件提出反馈!
Squalk的功能与配置
Squalk是一个基于Nostr构建的论坛,能够管理从小型到大型社区的各种规模;实际上,你可以选择以“简单”或“完整”模式来设置它。简单模式只暴露一个论坛,而在完整模式下,你可以拥有任意数量的论坛。每个论坛都包含一个位于右侧边栏的聊天功能,这对于快速与成员互动非常有用。
简单模式与完整模式
- 简单模式:仅展示一个论坛,适合小型或主题集中的社区。
- 完整模式:可创建多个论坛,适合大型或主题多样化的社区。
聊天功能
每个论坛的右侧边栏都集成了聊天功能,方便用户快速交流。这一设计旨在平衡论坛的正式讨论和即时互动需求。
技术实现
Squalk采用SvelteKit作为其后端框架,支持静态单页应用(SPA)和服务器端渲染(SSR)两种模式。这种灵活性不仅提升了用户体验,也增强了内容的可访问性和搜索引擎优化(SEO)效果。
静态单页应用(SPA)
- 优势:加载速度快,用户体验流畅,适合内容更新频率不高的论坛。
- 适用场景:小型论坛或个人博客。
服务器端渲染(SSR)
- 优势:内容可被搜索引擎爬取,有利于SEO优化。
- 适用场景:大型论坛或内容更新频繁的社区。
使用Squalk的步骤
- 安装依赖:确保你的开发环境已安装Node.js和npm。
- 克隆仓库:使用以下命令克隆Squalk仓库:
git clone https://github.com/dtonon/squalk.git
- 安装项目依赖:
cd squalk
npm install
- 启动开发服务器:
npm run dev
- 访问应用:在浏览器中访问
http://localhost:3000。
结语
Squalk为那些热爱传统论坛动态的用户提供了一个现代化的解决方案。通过基于Nostr协议的设计,它不仅保留了论坛的精髓,还融入了现代Web技术的便利性。如果你也在寻找一个能够促进深度讨论和知识积累的在线社区,不妨试试Squalk。