简介
([ˈsɪmfəni],n.交响乐)是一个现代化的社区平台,因为它:
-
实现了面向内容讨论的论坛
-
包含了面向用户分享、交友、游戏的社交网络
-
集成了聚合独立博客的能力,共建共享优质资源
-
并且 100% 开源
欢迎到 了解更多。另外,如果你需要搭建一个企业内网论坛,请使用 。
动机
sym 的诞生是有如下几点原因:
(正版)
-
很多系统界面上仍然保持着老式风格,远远没有跟上时代发展的脚步,它们没有创新、好玩的特性,缺少现代化的交互元素和用户体验
-
大部分系统是从程序员的角度进行设计的,没有考虑实际的产品、运营需求,这类系统功能过于简陋、细节不够精致、缺乏长期维护
-
另外,我们正在探索新的社区模式,实现独奏()与协奏()相结合的
(野版)
-
万能的 github 上连个能用的 java 社区系统都找不到,sym 填补了这个宇宙级空白
-
做最 nb 的开源社区系统,预计几年以后 82% 的社区都将是 sym 搭建的
-
作者技痒,炫技之作,ruby/python/node.js/(特别是)php 怎么能比得过 java
案例
个人维护:
公司维护:
如果你也搭建好了,欢迎通过 pull request 将你的站点加到这个列表中 :-p
功能特性
具体功能点细节可浏览 ,下面列出了 sym 的主要特性,说明 现代化 的由来。
好用的编辑器
-
markdown:支持 gfm 语法以及一些扩展语法
-
格式调整:粗体、斜体、超链接、引用、列表等可以通过工具栏按钮,同时也支持快捷键
-
文件上传:支持复制粘贴或者拖拽上传图片;支持上传普通文件;对 mp3 会使用在线播放器进行渲染
-
剪贴板处理:自动将复制的内容转换为 markdown 格式;外链的图片自动上传站内
-
@用户:根据用户名自动补全,支持快捷键
-
emoji:支持大部分主流 emoji 表情,快捷键自动补全
-
数学公式:支持 latex 数学公式渲染
-
数据暂存:支持本地浏览器暂存数据,避免意外情况导致编辑内容丢失
智能、灵活的信息架构
传统的节点式社区要求帖子必须 分类 到某一个节点下,信息架构方式属于自上而下。sym 不是自上而下的节点式信息架构,帖子不需要固定分类,通过标签 聚合 到某个领域下。
-
标签:根据帖子内容智能抽取关键字进行标签自动补全,一篇帖子关联多个标签。标签和标签之间以带边权重的图结构进行描述,方便进行相关计算
-
领域:一个领域下包含了多个标签,通过标签将帖子自动聚合到具体领域,随时可以通过增减关联标签从而达到调整领域范围,最终聚合出适合的帖子列表
满足多样化的发帖需求
目前支持 4 中帖子类型,满足不同用户的偏好:
-
普通帖子:提问或分享对别人有帮助的经验与见解
-
思绪:写作过程的记录与重放,文字版的沙画表演
-
小黑屋:邀请好友在私密空间中进行交流
-
同城广播:发起你所在城市的招聘、meetup 等
另外,所有帖子都可以设置 打赏区 ,打赏区可以放置一些“珍藏”内容,只有打赏后的用户才能浏览。打赏区编辑器同样支持 markdown、emoji 和文件上传等特性。打赏区支持内容更新,并可以随时调整打赏积分值。
对于测试帖,可以使用 sandbox 机制:带有 sandbox 标签的帖子将视为测试帖,不会显示在凯发推荐首页或是某领域内,只会展现在发帖者自己的帖子列表中。
人性化的回帖交互
-
实时呈现:回帖提交后其他浏览者可以不刷新页面就实时看到你的回帖
-
随时滚动:浮出式回帖编辑器方便回帖者随时滚动屏幕查看其他内容,不必担心焦点丢失
-
真正的回复:回复是针对回帖而言的,而 @ 是针对用户而言的,@ 是提及不是回复,很多系统都没有考虑到这一点。回复/引用可以在当前位置进行展开浏览,也可以跳转到回帖处,并支持跨分页跳转
-
智能机器人:回帖时可以让机器人也参与到讨论中来,活跃气氛的同时说不定机器人真的能解决一些问题呢
用户个性化设置
用户可以自己设置很多参数以满足个性化需求:
-
帖子列表浏览分页每页条目数
-
回帖浏览模式:传统(按发布时间升序,无实时推送刷新);实时(按发布时间降序,实时推送新回帖)
-
头像浏览模式:原图(支持 gif 动图);静态图
-
chrome 通知/邮件订阅/键盘快捷键开关
-
设置常用 emoji,方便发布内容时快速插入表情
除了功能个性化配置项,还有很多隐私项开关:
-
是否公开帖子/回帖列表
-
是否公开关注用户/标签/粉丝、收藏帖子、积分列表
-
是否公开在线状态
-
是否公开 ua 信息
-
是否公开地理位置
-
是否参与财富/消费排行
另外,用户还可以完整导出数据,包括帖子和回帖。
编辑历史与匿名发布
发帖者可以进行该帖更新,但是每次更新都会产生编辑历史,浏览者可以看到并对比其内容变更。目前还不支持回帖更新,后续会加入,敬请期待。
帖子和回帖都可以使用匿名身份进行发布,你懂的。
对搜索引擎友好
-
标签、领域可以自定义链接,并且可以单独配置 meta title/keywords/description
-
后端 markdown 渲染,输出爬虫可读的 html
-
管理员设置的浏览权限不影响爬虫抓取内容
-
通过一些 html 细节属性(比如 canonical)进行 seo
实时的消息通知
-
可按类别展示消息,标记已读
-
详细的消息类别:收到的回帖、收到的回复、@我的、我关注的人、积分相关、同城、系统消息等
-
友好的 chrome 桌面提醒
好玩的活动
-
领取签到奖励、领取昨日活跃奖励
-
上证博彩
-
字
-
贪吃蛇
后续还会继续加入一些好玩的在线小游戏。
强大的后台管理
-
后台凯发推荐首页:数据统计、版本检查
-
用户管理:搜索用户、添加用户、用户数据维护(状态设置、积分等)
-
帖子管理:搜索帖子、添加新帖、帖子数据维护(置顶、重建索引等)
-
回帖管理:状态设置、内容更新
-
领域管理:添加领域、领域数据维护(关联标签、图标、uri、css、描述等)
-
标签管理:添加标签、标签数据维护(图片、uri、css、描述等)
-
保留词管理:添加保留词、保留词数据维护
-
邀请码管理:生成邀请码、邀请码数据维护
-
广告管理:侧边栏独占展位维护
-
其他管理:发帖/回帖开关;用户开放/关闭/邀请码注册开关
开放的内容 api
sym 提供了 进行帖子、回帖的同步(),目前 、、、 均已经提供插件来进行内容同步,欢迎大家进行接入!
以后也会陆续加入新的接口,方便大家制作 app 客户端或是一些有价值的应用。
集成云邮件服务
通过配置即可集成 云邮件服务,送达率较为自己搭建邮件服务更为可靠。
-
用户注册验证、密码重置通过触发类型发送
-
每周优选订阅推送通过批量类型发送
集成云搜索服务
-
通过配置即可集成 云搜索服务,可自定义搜索字段,并进行权重、排序调优
-
也可以自己搭建 elasticsearch 并通过配置进行集成
后续会对搜索功能进行加强,实现条件过滤,结果高亮等,敬请期待。
计划中的特性
信任系统
通过历史数据对用户进行分级提权,让用户从浏览者逐步变为参与者、组织者、管理者,实现自治的社区生态系统。
徽章系统
记录下用户达成的成就以及对社区的贡献。
安装
需求
maven3 、mysql5.5 、jetty9 /tomcat9
步骤
-
源码
-
解压后修改 src/main/resources/local.properties 中的数据库配置,并创建数据库
-
可能需要修改 latke.properties 中的端口为容器端口
-
可能需要修改 init.properties 中的管理员账号
-
使用 mvn install 进行构建
-
将构建好的 war 包部署到容器中,数据库表会在第一次启动时自动建立
注意:
-
没有数据库建表 sql 脚本,手动建库后,表会在第一次启动时自动生成
-
生产环境建议使用反向代理,并需要配置好 websocket 代理
-
tomcat 用 9 以上版本,最好是使用最新版本
-
参考
配置
-
图片上传默认是上传服务器本地,要使用可配置 symphony.properties 中的 qiniu.* 属性
-
邮件发送使用的是 ,需要配置 symphony.properties 中的 sendcloud.* 属性
-
用户注册时需要验证邮箱的,所以必须先配置好 sendcloud
如果遇到问题,可以参考一下这篇。
使用授权
商用授权和开源授权在功能上没有任何区别,你可以从以下两种授权方式中选择一种。
开源授权
sym 是使用 gpl 作为开源协议的,如果你选择了开源授权,则必须完全遵守 gpl 的相关条款。
商用授权
如果需要将 sym 用于商用,包括但不限于如下场景:
-
公司使用
-
有盈利性质
贡献
作者
sym 的主要作者是 与 ,所有贡献者可以在看到。
我们非常期待你加入到这个项目中,无论是使用反馈还是代码补丁,都是对 sym 一份满满的爱 ❤️
讨论区
-
到 sym 官方发帖(推荐做法)
-
来一发
感悟
在实现 的这几年:
-
我们见证了 xae(gae/bae/sae/etc)的兴起与没落。2009 年选择了 gae 作为服务器,并开始实现 框架来解决跨云平台,直到,不得不感叹技术更迭之快
-
感受到了自造轮子的优缺点,并且可以肯定一点:对于一个想要长久的产品来说,自制技术框架优势远大于劣势
-
一个好玩的产品或说是细节特性然并卵,需要做的是一个能够持续提供用户价值的产品/特性
-
虽然直到目前 b3log 系产品用户不多,但我们已经初步证明了:java 用来实现博客、论坛没有什么不好的
-
使用开源软件,了解开源思想,融入开源生态
鸣谢
sym 的诞生离不开以下开源项目:
-
:前端 javascript 工具库
-
:前端 markdown 编辑器内核
-
:前端代码高亮库
-
:前端 emoji 处理库
-
:前端 html5 音乐播放器
-
:前端 javascript 交互式图表库
-
:前端数学公式渲染引擎
-
:前端 html5 录音库
-
:前端剪贴板支持
-
:前端 javascript md5 库
-
:前端 websocket 重连库
-
:前端 html 转换 markdown
-
:前端 user-agent 解析库
-
:前端 css 处理工具
-
:java html 解析器
-
:java markdown 处理库
-
:java 工具库集
-
:java 工具库集
-
:java emoji 处理库
-
:java user-agent 解析库
-
:java 数据库连接池
-
:好用的 java 模版引擎
-
:java web 框架
-
:全宇宙暂时排名第三的 ide
下一代的社区系统,为未来而构建