Java 社区平台 - Sym 1.7.0 发布

English | 中文 html

activities

简介

Symphony([ˈsɪmfəni],n.交响乐)是一个现代化的社区平台,由于它:前端

  • 实现了面向内容讨论的论坛
  • 包含了面向用户分享、交友、游戏的社交网络
  • 集成了聚合独立博客的能力,共建共享优质资源
  • 而且 100% 开源

欢迎到 Sym 官方讨论区了解更多。另外,若是你须要搭建一个企业内网论坛,请使用 SymXjava

动机

Sym 的诞生是有以下几点缘由:jquery

(正版)git

  • 不少系统界面上仍然保持着老式风格,远远没有跟上时代发展的脚步,它们没有创新、好玩的特性,缺乏现代化的交互元素和用户体验
  • 大部分系统是从程序员的角度进行设计的,没有考虑实际的产品、运营需求,这类系统功能过于简陋、细节不够精致、缺少长期维护
  • 另外,咱们正在探索新的社区模式,实现独奏(Solo)与协奏(Symphony)相结合的社区新体验

(野版)程序员

  • 万能的 GitHub 上连个能用的 Java 社区系统都找不到,Sym 填补了这个宇宙级空白
  • 作最 NB 的开源社区系统,预计几年之后 82% 的社区都将是 Sym 搭建的
  • 做者技痒,炫技之做,Ruby/Python/Node.js/(特别是)PHP 怎么能比得过 Java

案例

我的维护:github

公司维护:web

若是你也搭建好了,欢迎经过 Pull Request 将你的站点加到这个列表中 :-p数据库

功能特性

具体功能点细节可浏览 Sym 功能点脑图,下面列出了 Sym 的主要特性,说明 现代化 的由来。apache

好用的编辑器

1

  • Markdown:支持 GFM 语法以及一些扩展语法
  • 格式调整:粗体、斜体、超连接、引用、列表等能够经过工具栏按钮,同时也支持快捷键
  • 文件上传:支持复制粘贴或者拖拽上传图片;支持上传普通文件;对 MP3 会使用在线播放器进行渲染
  • 剪贴板处理:自动将复制的内容转换为 Markdown 格式;外链的图片自动上传站内
  • @用户:根据用户名自动补全,支持快捷键
  • Emoji:支持大部分主流 Emoji 表情,快捷键自动补全
  • 数学公式:支持 LaTex 数学公式渲染
  • 数据暂存:支持本地浏览器暂存数据,避免意外状况致使编辑内容丢失

智能、灵活的信息架构

2

传统的节点式社区要求帖子必须 分类 到某一个节点下,信息架构方式属于自上而下。Sym 不是自上而下的节点式信息架构,帖子不须要固定分类,经过标签 聚合 到某个领域下。

  • 标签:根据帖子内容智能抽取关键字进行标签自动补全,一篇帖子关联多个标签。标签和标签之间以带边权重的图结构进行描述,方便进行相关计算
  • 领域:一个领域下包含了多个标签,经过标签将帖子自动聚合到具体领域,随时能够经过增减关联标签从而达到调整领域范围,最终聚合出适合的帖子列表

知足多样化的发帖需求

3

目前支持 4 中帖子类型,知足不一样用户的偏好:

  • 普通帖子:提问或分享对别人有帮助的经验与看法
  • 思绪:写做过程的记录与重放,文字版的沙画表演 (?)
  • 小黑屋:邀请好友在私密空间中进行交流
  • 同城广播:发起你所在城市的招聘、Meetup 等

另外,全部帖子均可以设置 打赏区 ,打赏区能够放置一些“珍藏”内容,只有打赏后的用户才能浏览。打赏区编辑器一样支持 Markdown、Emoji 和文件上传等特性。打赏区支持内容更新,并能够随时调整打赏积分值。

对于测试帖,可使用 Sandbox 机制:带有 Sandbox 标签的帖子将视为测试帖,不会显示在首页或是某领域内,只会展示在发帖者本身的帖子列表中。

人性化的回帖交互

4

  • 实时呈现:回帖提交后其余浏览者能够不刷新页面就实时看到你的回帖
  • 随时滚动:浮出式回帖编辑器方便回帖者随时滚动屏幕查看其余内容,没必要担忧焦点丢失
  • 真正的回复:回复是针对回帖而言的,而 @ 是针对用户而言的,@ 是说起不是回复,不少系统都没有考虑到这一点。回复/引用能够在当前位置进行展开浏览,也能够跳转到回帖处,并支持跨分页跳转
  • 智能机器人:回帖时可让机器人也参与到讨论中来,活跃气氛的同时说不定机器人真的能解决一些问题呢

用户个性化设置

5

用户能够本身设置不少参数以知足个性化需求:

  • 帖子列表浏览分页每页条目数
  • 回帖浏览模式:传统(按发布时间升序,无实时推送刷新);实时(按发布时间降序,实时推送新回帖)
  • 头像浏览模式:原图(支持 gif 动图);静态图
  • Chrome 通知/邮件订阅/键盘快捷键开关
  • 设置经常使用 Emoji,方便发布内容时快速插入表情

除了功能个性化配置项,还有不少隐私项开关:

  • 是否公开帖子/回帖列表
  • 是否公开关注用户/标签/粉丝、收藏帖子、积分列表
  • 是否公开在线状态
  • 是否公开 UA 信息
  • 是否公开地理位置
  • 是否参与财富/消费排行

另外,用户还能够完整导出数据,包括帖子和回帖。

编辑历史与匿名发布

6

发帖者能够进行该帖更新,可是每次更新都会产生编辑历史,浏览者能够看到并对比其内容变动。目前还不支持回帖更新,后续会加入,敬请期待。

帖子和回帖均可以使用匿名身份进行发布,你懂的。

对搜索引擎友好

  • 标签、领域能够自定义连接,而且能够单独配置 meta title/keywords/description
  • 后端 Markdown 渲染,输出爬虫可读的 HTML
  • 管理员设置的浏览权限不影响爬虫抓取内容
  • 经过一些 HTML 细节属性(好比 canonical)进行 SEO

实时的消息通知

8

  • 可按类别展现消息,标记已读
  • 详细的消息类别:收到的回帖、收到的回复、@个人、我关注的人、积分相关、同城、系统消息等
  • 友好的 Chrome 桌面提醒

好玩的活动

7

  • 领取签到奖励、领取昨日活跃奖励
  • 上证博彩
  • (?)
  • 贪吃蛇

后续还会继续加入一些好玩的在线小游戏。

强大的后台管理

9

  • 后台首页:数据统计、版本检查
  • 用户管理:搜索用户、添加用户、用户数据维护(状态设置、积分等)
  • 帖子管理:搜索帖子、添加新帖、帖子数据维护(置顶、重建索引等)
  • 回帖管理:状态设置、内容更新
  • 领域管理:添加领域、领域数据维护(关联标签、图标、URI、CSS、描述等)
  • 标签管理:添加标签、标签数据维护(图片、URI、CSS、描述等)
  • 保留词管理:添加保留词、保留词数据维护
  • 邀请码管理:生成邀请码、邀请码数据维护
  • 广告管理:侧边栏独占展位维护
  • 其余管理:发帖/回帖开关;用户开放/关闭/邀请码注册开关

开放的内容 API

Sym 提供了 API 进行帖子、回帖的同步(B3log 构思),目前 SoloTypechoZ-BlogPHPWordPress 均已经提供插件来进行内容同步,欢迎你们进行接入!

之后也会陆续加入新的接口,方便你们制做 APP 客户端或是一些有价值的应用。

集成云邮件服务

10

经过配置便可集成 SendCloud 云邮件服务,送达率较为本身搭建邮件服务更为可靠。

  • 用户注册验证、密码重置经过触发类型发送
  • 每周优选订阅推送经过批量类型发送

集成云搜索服务

11

  • 经过配置便可集成 Algolia 云搜索服务,可自定义搜索字段,并进行权重、排序调优
  • 也能够本身搭建 Elasticsearch 并经过配置进行集成

后续会对搜索功能进行增强,实现条件过滤,结果高亮等,敬请期待。

计划中的特性

信任系统

经过历史数据对用户进行分级提权,让用户从浏览者逐步变为参与者、组织者、管理者,实现自治的社区生态系统。

徽章系统

记录下用户达成的成就以及对社区的贡献。

安装

需求

Maven3+、MySQL5.5+、Jetty9+/Tomcat9+

步骤

  1. 下载源码
  2. 解压后修改 src/main/resources/local.properties 中的数据库配置,并建立数据库
  3. 可能须要修改 latke.properties 中的端口为容器端口
  4. 可能须要修改 init.properties 中的管理员帐号
  5. 使用 mvn install 进行构建
  6. 将构建好的 war 包部署到容器中,数据库表会在第一次启动时自动创建

注意:

  • 没有数据库建表 SQL 脚本,手动建库后,表会在第一次启动时自动生成
  • 生产环境建议使用反向代理,并须要配置好 WebSocket 代理
  • Tomcat 用 9 以上版本,最好是使用最新版本
  • 参考 Latke 配置剖析

配置

  • 图片上传默认是上传服务器本地,要使用七牛可配置 symphony.properties 中的 qiniu.* 属性
  • 邮件发送使用的是 SendCloud,须要配置 symphony.properties 中的 sendcloud.* 属性
  • 用户注册时须要验证邮箱的,因此必须先配置好 SendCloud

若是遇到问题,能够参考一下这篇帖子

使用受权

商用受权和开源受权在功能上没有任何区别,你能够从如下两种受权方式中选择一种。

开源受权

Sym 是使用 GPL 做为开源协议的,若是你选择了开源受权,则必须彻底遵照 GPL 的相关条款。

商用受权

若是须要将 Sym 用于商用,包括但不限于以下场景:

  • 公司使用
  • 有盈利性质

则必须付费,价格为 ¥10000,请联系 QQ845765 或者 DL88250@gmail.com 进行细节咨询。

贡献

做者

Sym 的主要做者是 DanielVanessa,全部贡献者能够在这里看到。

咱们很是期待你加入到这个项目中,不管是使用反馈仍是代码补丁,都是对 Sym 一份满满的爱 :heart:

讨论区

  • 到 Sym 官方讨论区发帖(推荐作法)
  • 来一发 issue
  • 加入 Sym 开发支持 Q 群 17370164

感悟

在实现 B3log 构思的这几年:

  • 咱们见证了 xAE(GAE/BAE/SAE/etc)的兴起与没落。2009 年选择了 GAE 做为服务器,并开始实现 Latke 框架来解决跨云平台,直到告别 GAE,不得不感叹技术更迭之快
  • 感觉到了自造轮子的优缺点,而且能够确定一点:对于一个想要长久的产品来讲,自制技术框架优点远大于劣势
  • 一个好玩的产品或说是细节特性然并卵,须要作的是一个可以持续提供用户价值的产品/特性
  • 虽然直到目前 B3log 系产品用户很少,但咱们已经初步证实了:Java 用来实现博客、论坛没有什么很差的
  • 使用开源软件,了解开源思想,融入开源生态
  • 若是你想作个程序员相关的论坛,请三思
  • 你怎么看待社群、社区这两个词?
  • UGC 社区价值生态

鸣谢

Sym 的诞生离不开如下开源项目:


下一代的社区系统,为将来而构建

相关文章
相关标签/搜索