English | 中文 html
簡介
Symphony([ˈsɪmfəni],n.交響樂)是一個現代化的社區平臺,由於它:前端
- 實現了面向內容討論的論壇
- 包含了面向用戶分享、交友、遊戲的社交網絡
- 集成了聚合獨立博客的能力,共建共享優質資源
- 而且
100%
開源
歡迎到 Sym 官方討論區瞭解更多。另外,若是你須要搭建一個企業內網論壇,請使用 SymX。java
動機
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
好用的編輯器
- 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 提供了 API 進行帖子、回帖的同步(B3log 構思),目前 Solo、Typecho、Z-BlogPHP、WordPress 均已經提供插件來進行內容同步,歡迎你們進行接入!
之後也會陸續加入新的接口,方便你們製做 APP 客戶端或是一些有價值的應用。
集成雲郵件服務
經過配置便可集成 SendCloud 雲郵件服務,送達率較爲本身搭建郵件服務更爲可靠。
- 用戶註冊驗證、密碼重置經過觸發類型發送
- 每週優選訂閱推送經過批量類型發送
集成雲搜索服務
- 經過配置便可集成 Algolia 雲搜索服務,可自定義搜索字段,並進行權重、排序調優
- 也能夠本身搭建 Elasticsearch 並經過配置進行集成
後續會對搜索功能進行增強,實現條件過濾,結果高亮等,敬請期待。
計劃中的特性
信任系統
經過歷史數據對用戶進行分級提權,讓用戶從瀏覽者逐步變爲參與者、組織者、管理者,實現自治的社區生態系統。
徽章系統
記錄下用戶達成的成就以及對社區的貢獻。
安裝
需求
Maven3+、MySQL5.5+、Jetty9+/Tomcat9+
步驟
- 下載源碼
- 解壓後修改
src/main/resources/local.properties
中的數據庫配置,並建立數據庫
- 可能須要修改
latke.properties
中的端口爲容器端口
- 可能須要修改
init.properties
中的管理員帳號
- 使用
mvn install
進行構建
- 將構建好的 war 包部署到容器中,數據庫表會在第一次啓動時自動創建
注意:
- 沒有數據庫建表 SQL 腳本,手動建庫後,表會在第一次啓動時自動生成
- 生產環境建議使用反向代理,並須要配置好 WebSocket 代理
- Tomcat 用 9 以上版本,最好是使用最新版本
- 參考 Latke 配置剖析
配置
- 圖片上傳默認是上傳服務器本地,要使用七牛可配置
symphony.properties
中的 qiniu.*
屬性
- 郵件發送使用的是 SendCloud,須要配置
symphony.properties
中的 sendcloud.*
屬性
- 用戶註冊時須要驗證郵箱的,因此必須先配置好 SendCloud
若是遇到問題,能夠參考一下這篇帖子。
使用受權
商用受權和開源受權在功能上沒有任何區別,你能夠從如下兩種受權方式中選擇一種。
開源受權
Sym 是使用 GPL 做爲開源協議的,若是你選擇了開源受權,則必須徹底遵照 GPL 的相關條款。
商用受權
若是須要將 Sym 用於商用,包括但不限於以下場景:
則必須付費,價格爲 ¥10000,請聯繫 QQ845765 或者 DL88250@gmail.com 進行細節諮詢。
貢獻
做者
Sym 的主要做者是 Daniel 與 Vanessa,全部貢獻者能夠在這裏看到。
咱們很是期待你加入到這個項目中,不管是使用反饋仍是代碼補丁,都是對 Sym 一份滿滿的愛 :heart:
討論區
- 到 Sym 官方討論區發帖(推薦作法)
- 來一發 issue
- 加入 Sym 開發支持 Q 羣 17370164
感悟
在實現 B3log 構思的這幾年:
- 咱們見證了 xAE(GAE/BAE/SAE/etc)的興起與沒落。2009 年選擇了 GAE 做爲服務器,並開始實現 Latke 框架來解決跨雲平臺,直到告別 GAE,不得不感嘆技術更迭之快
- 感覺到了自造輪子的優缺點,而且能夠確定一點:對於一個想要長久的產品來講,自制技術框架優點遠大於劣勢
- 一個好玩的產品或說是細節特性然並卵,須要作的是一個可以持續提供用戶價值的產品/特性
- 雖然直到目前 B3log 系產品用戶很少,但咱們已經初步證實了:Java 用來實現博客、論壇沒有什麼很差的
- 使用開源軟件,瞭解開源思想,融入開源生態
- 若是你想作個程序員相關的論壇,請三思
- 你怎麼看待社羣、社區這兩個詞?
- UGC 社區價值生態
鳴謝
Sym 的誕生離不開如下開源項目:
下一代的社區系統,爲將來而構建