简介
Sym 是一个用 Java 写的现代化的社区论坛,欢迎来体验!(如果你需要搭建一个企业内网论坛,请使用 SymX)
- 非常详细的 Sym 功能点脑图
- 如果你在搭建或者二次开发时碰到问题,欢迎加 Q 群 17370164 进行讨论
Sym 的诞生是有如下几点原因:
(正版)
- 好用的 Java 开源论坛系统难以寻找
- 很多系统界面上仍然保持着老式风格,远远没有跟上前端发展的脚步
- 很多系统没有创新、好玩的特性,缺少现代化的用户体验
- 我们正在探索新的论坛模式,实现独奏(Solo)与协奏(Symphony)相结合的社区新体验
(野版)
- 做最 NB 的开源论坛系统
- 作者技痒,炫技之作
基本理念
实时交互
在浏览帖子时,传统论坛都是需要刷新页面来查看回帖的,而 Sym 则是基于 WebSocket 技术进行回帖推送,看帖时不需要刷新页面也可以看到其他人回帖。
互联
Sym 提供了 API 进行帖子、回帖的同步(B3log 构思),目前 Solo、Typecho、Z-BlogPHP、WordPress 均已经提供插件来进行内容同步,欢迎大家进行接入!
HTML5
Sym 使用了很多 HTML5 提供的技术特性,比如
- 通过使用本地存储防止编辑帖子/回帖时内容丢失
- 使用了音频特性来进行帖子/回帖音频录制、播放
- 复制/粘贴上传图片
- CSS3 动画
通过使用这些技术,Sym 可以让用户在分享、交流时更加便捷、舒服
安装
需求:Maven3+、MySQL5.5+、Jetty9+/Tomcat9+
- 下载源码
- 解压后修改
src/main/resources/local.properties
中的数据库配置,并创建数据库 -
可能需要修改
latke.properties
中的端口为容器端口 -
可能需要修改
init.properties
中的管理员账号 - 使用
mvn install
进行构建 - 将构建好的 war 包部署到容器中,数据库表会在第一次启动时自动建立
注意:
- 没有数据库建表 SQL 脚本,手动建库后,表会在第一次启动时自动生成
- 生产环境建议使用反向代理,并需要配置好 WebSocket 代理
- Tomcat 用 9 以上版本,最好是使用最新版本
配置
- 图片上传默认是上传服务器本地,要使用七牛可配置
symphony.properties
中的qiniu.*
属性 - 将 WEB-INF/cron.xml 中注释掉的部分打开
- 邮件发送使用的是 SendCloud,需要配置
symphony.properties
中的sendcloud.*
属性 - 用户注册时需要验证邮箱的,所以必须先配置好 SendCloud
如果遇到问题,可以参考一下这篇帖子。
案例
如果你也搭建好了,欢迎通过 Pull Request 将你的站点加到这个列表中 :-p
商用授权
如果需要将 Sym 用于商用(比如公司搭建对外社区),则必须付费,报价 ¥4000,请联系我(Q845765)进行细节咨询。
开源授权
请仔细查看并遵循使用条款,尊重我们的劳动成果。
商用授权和开源授权在功能上没有任何区别,但商用授权后可以去除页脚版权部分。如果在未获得商用授权前私自去除版权部分,必将追究法律责任。
感悟
在实现 B3log 构思的这几年:
- 我们见证了 xAE(GAE/BAE/SAE/etc)的兴起与没落。2009 年选择了 GAE 作为服务器,并开始实现 Latke 框架来解决跨云平台,直到告别 GAE,不得不感叹技术更迭之快
- 感受到了自造轮子的优缺点,并且可以肯定一点:对于一个想要长久的产品来说,自制技术框架优势远大于劣势
- 一个好玩的产品或说是细节特性然并卵,需要做的是一个能够持续提供用户价值的产品/特性
- 虽然直到目前 B3log 系产品用户不多,但我们已经初步证明了:Java 用来实现博客、论坛没有什么不好的
- 使用开源软件,了解开源思想,融入开源
- 如果你想做个程序员相关的论坛,请三思
- 你怎么看待社群、社区这两个词?
- UGC 社区价值生态
贡献
Sym 的主要作者是 Daniel 与 Vanessa,所有贡献者可以在这里看到。
我们非常期待你加入到这个项目中,无论是使用反馈还是代码补丁,都是对 Sym 一份满满的爱 ❤️
Terms
- This software is open sourced under the Apache License 2.0
- You can not get rid of the "Powered by B3log 开源 • Sym" from any page, even which you made
- If you want to use this software for commercial purpose, please mail to support@liuyun.io for a commercial license request
- Copyright © b3log.org, all rights reserved
鸣谢
Sym 的诞生离不开以下开源项目:
- jQuery:前端 JavaScript 工具库
- CodeMirror:前端 Markdown 编辑器内核
- Highlight.js:前端代码高亮库
- emojify.js:前端 Emoji 处理库
- APlayer:前端 HTML5 音乐播放器
- ECharts:前端 JavaScript 交互式图表库
- MathJax:前端数学公式渲染引擎
- SoundRecorder:前端 HTML5 录音库
- ZeroClipboard:前端剪贴板支持
- JavaScript MD5:前端 JavaScript MD5 库
- ReconnectingWebSocket:前端 WebSocket 重连库
- to-markdown:前端 HTML 转换 Markdown
- UAParser.js:前端 User-Agent 解析库
- Sass:前端 CSS 处理工具
- jsoup:Java HTML 解析器
- pegdown:Java Markdown 处理库
- Apache Commons:Java 工具库集
- Jodd:Java 工具库集
- emoji-java:Java Emoji 处理库
- User-Agent-Utils:Java User-Agent 解析库
- Druid:Java 数据库连接池
- FreeMarker:好用的 Java 模版引擎
- Latke:Java Web 框架
- NetBeans:全宇宙暂时排名第三的 IDE
功能图解
首页
帖子
(右边红色回帖按钮的位置应该在右下角,截图软件不给力..)
个人设置
发布编辑
- Markdown 编辑器,支持 GFM 语法
- LaTeX 数学公式
- 复制粘贴时自动转换为 Markdown
- Chrome 下可以直接粘贴图片,其他浏览器支持拖拽
- 除了使用文字,也可以在帖子内进行录音
- 支持 Emoji
- 使用本地存储保障数据在未提交时不丢
移动端
移动端使用单独的模版进行渲染,解决通过一套模版自适应不能达成的效果和体验。