/symphony

:notes: A modern community (forum/BBS/SNS/blog) platform written in Java. 一个用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台。

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

English | 中文

Introduction

Symphony is a modern community platform, because it:

  • implements a content oriented discussion forum
  • includes a social network for users to share, make friends, and play games
  • the ability to aggregate independent bloggers, to build and share quality resources
  • and 100% open source

Welcome to Sym official community - HacPai for more details.

Motivation

Sym was born with the following reasons:

(genuine)

  • a lot of system interfaces still keep the old style, far from keeping up with the pace of development of the times, they do not have the characteristics of innovation, fun, lack of modern interactive elements and user experience
  • most systems are designed from the programmer's point of view, without considering the actual product, operational requirements, such systems function is too simple, the details are not refined enough, the lack of long-term maintenance
  • in addition, we are exploring a new community mode, to achieve Solo) and Symphony combined with community new experience

(funny)

  • universal GitHub even can not find a Java community system, Sym to fill the gaps in the universe
  • do the most popular open source community system, is expected to be a few years after 82% of the community will be built in Sym
  • Ruby/Python/Node.js/(especially) PHP how can do better than Java

Usecases

Community edition:

Commercial edition:

If you build it, you are welcome to add your site to this list by Pull Request :-p

Features

Specific function point details can be viewed at Sym 功能点脑图, the following lists the main features of Sym, and illustrates why Sym is modern.

Good editors

1

  • Markdown: support GFM syntax and some extended syntax
  • format adjustment: bold, italics, hyperlinks, references, etc. the list toolbar button also supports shortcut keys
  • file upload: support for copy and paste or drag and drop to upload pictures; support for uploading ordinary files; MP3 will use the online player for rendering
  • clipboard processing: automatically copy the contents of the conversion to Markdown format; the image of the chain automatically uploaded to the station
  • @ username: according to the automatic completion, support shortcut key
  • Emoji: most of the mainstream support for Emoji expression, shortcut keys for automatic completion
  • mathematical formula: support LaTex mathematical formula rendering
  • data temporary local browser: support for temporary storage of data, to avoid accidental edits lost

Intelligent and flexible information architecture

2

The traditional node type community requires the post must belong to a node, the information architecture is top-down. Sym is not a top-down node type information architecture, the post does not require a fixed classification, through the tag to aggregate into a domain.

  • tag: according to the content of the post intelligent extraction keyword tag automatic completion, a post to multiple tags. The structure of the graph with edge weight is described, which is convenient to calculate the correlation
  • domain: a domain contains multiple tags, tags will automatically by post polymerization to specific areas, at any time can increase and decrease the associated tags so as to adjust the scope of the domain, for the final polymerization card list

To meet the diverse needs of post

3

Currently supports 4 types of posts, to meet the different user preferences:

  • General Post: ask or share experiences and insights that help others
  • Thoughts: to record and replay the writing process, the text version of the watch (?)
  • Private Discussion: invite friends to communicate in a private space
  • City Broadcast: the recruitment of your city, Meetup, etc.

In addition, all posts can be set playing area, it can be placed some "treasure" content, only after the user can enjoy the reward. Play area editor also supports Markdown, Emoji and file upload and other characteristics. Play area to support content updates, and can adjust the value at any time.

For testing posts, you can use the Sandbox mechanism: with the Sandbox tag posts will be considered as a test post, will not show in the home or in a field, will only show in the post of their own posts list.

Humanized interactive replies

4

  • in real time: replies submitted after the other readers can not refresh the page to see your reply in time
  • floating scroll: at any time at any time convenient reply editor replies to scroll the screen to see other content, do not have to worry about losing focus
  • real reply: reply for the reply, which is based on the user @, @ is not mentioned in reply, many systems are not considering this point. Reply / reference can be carried through in the current position, can also jump to reply, and support for cross page jump
  • intelligent robots: robots can also send in a discussion and active atmosphere at the same time maybe robots can really solve some problems

User personalization

5

Users can set a lot of parameters to meet the individual needs:

  • customizes size of a list per page
  • replies: the traditional browsing mode (press release time ascending, real-time push refresh); real time (press release time DESC, real-time push new replies)
  • picture browse mode: original (GIF support graph); static map
  • Chrome notification / message subscription / keyboard shortcut switch
  • set commonly used Emoji, to facilitate the release of the contents of the rapid insertion of expression

In addition to the function of personalized configuration items, there are a lot of privacy switch:

  • whether public posts / replies list
  • do you have a public focus on the users / tags / fans, the collection posts, and the list of points
  • is open online
  • whether public UA information
  • whether public geographic location
  • whether to participate in the wealth / consumption ranking

In addition, users can also complete export data, including posts and replies.

Edit history and anonymous posting

6

Post/reply can be updated, but each update will produce a history of editing, visitors can see and compare the changes in its content.

Posts and replies can be used to publish anonymous identity, you know.

Search engine friendly

  • tags, fields can be custom links, and can be individually configured with title/keywords/description meta
  • back end Markdown rendering, output crawler readable HTML
  • administrator settings browsing permissions do not affect the crawler crawl content
  • through some HTML details properties (such as canonical) for SEO

Real-time message notification

8

  • to display messages by category, mark has read
  • with the message type: receive replies, receive a reply, @ I, I pay attention to people, integral city, information systems and other related
  • friendly Chrome desktop alerts

Fun activities

7

  • receive attendance awards, receive an active reward yesterday
  • Shanghai Lottery
  • Word (?)
  • Snake

Follow up will continue to add some fun online games.

Powered management console

9

  • background: data statistics, version check
  • user management: search users, add users, user data maintenance (state settings, points, etc.)
  • post management: add new search posts, posts, post maintenance data (top, rebuild index etc.)
  • replies Management: setting up, update
  • domain management: add fields, field data maintenance (associated labels, icons, URI, CSS, description, etc.)
  • label management: add tags, tag data maintenance (pictures, URI, CSS, description, etc.)
  • keep word management: add the reserved word, keep the word data maintenance
  • invitation code management: generate invitation code, invitation code data maintenance
  • advertising management: sidebar exclusive booth maintenance
  • other management post / replies: open / close / switch; user registration invitation code switch

Open content API

Sym API synchronous posts, replies B3log idea, the Solo, Typecho, Z-BlogPHP, WordPress have provided plug-ins to content synchronization, welcome to access!

In the future will be added to the new interface, to facilitate the production of APP client or some of the value of the application.

Integrated cloud mail service

10

Through the configuration can be integrated SendCloud cloud mail service, the service rate is more reliable to build their own mail service.

  • user login authentication, password reset by trigger type
  • weekly subscription push through batch type

Integrated cloud search service

11

  • through the configuration can be integrated Algolia cloud search service, can customize the search field, and the weight and ranking optimization
  • can also build their own Elasticsearch and integrated through the configuration

Follow up on the search function to strengthen, to achieve the conditions for filtering, the results highlight, please look forward to.

Roadmap

trust system

Through the historical data to carry on the classification to the user, lets the user gradually change to the participant, the organizer, the management, realizes the autonomous community ecosystem.

badge system

Record the achievements of the users and the contribution to the community.

Installation

Requirements

  • JDK8
  • Maven3+
  • MySQL5.5+
  • Jetty9 or Tomcat9

Steps

  1. Download source code
  2. to modify the database after extracting src/main/resources/local.properties configuration, and create a database
  3. may need to modify the latke.properties port for container port
  4. use mvn install to build
  5. to deploy the war package to the container, the database table will be created automatically at the start of the first

Notice:

  • there is no database table SQL script, manual database, table automatically generated in the first boot
  • production environment is recommended to use reverse proxy, and the need to configure the WebSocket agent
  • Tomcat with more than 9 version, it is best to use the latest version
  • reference Latke 配置剖析

Configuration

  • image upload the default is to upload the server locally, to use 七牛 can be configured in the qiniu.* attribute symphony.properties
  • mail is sent using SendCloud, you need to configure the sendcloud.* attribute in symphony.properties
  • user registration required to verify the mailbox, so you must first configure the SendCloud

If you encounter problems, you can refer to this post.

License

There is no difference between a commercial license and an open source license, and you can choose one of the following two ways.

Open source license

Sym is the use of GPL as an open source agreement, if you choose the open source license, you must fully comply with the relevant provisions of GPL.

Commercial license

If you need to use Sym for commercial use, including but not limited to the following scenarios:

  • company use
  • profitability

You must pay the price for $4000, please contact QQ 845765 or email (d@b3log.org) for detailed consultation.

Contribution

Authors

The main authors of Sym are Daniel and Vanessa, all contributors can see here.

We are very much looking forward to your joining in this project, whether it is the use of feedback or code patches, are on the Sym a full of love: heart:

Discussion area

  • to Sym official discussion area post (Recommended Practice)
  • new a issue
  • join Sym development support QQ group 17370164

Feeling

In the implementation of B3log idea of these years:

  • we have witnessed the rise and fall of xAE (GAE/BAE/SAE/etc). In 2009 GAE was selected as a server, and began to implement Latke framework to solve the cross platform cloud, until GAE, bid farewell to sigh technical change quickly
  • feel the advantages and disadvantages of self-made wheels, and certainly a bit: for a long to product, technology advantages far outweigh the disadvantages of self-made frame
  • a playful product or the details of the characteristics of the egg, it needs to be done is a product / feature that can continue to provide user value.
  • although until the current B3log product users are not many, but we have a preliminary proof: Java used to achieve the blog, forum, there is nothing bad
  • the use of open source software, to understand the idea of open source, into the open source ecology
  • 如果你想做个程序员相关的论坛,请三思
  • 你怎么看待社群、社区这两个词?
  • UGC 社区价值生态

Credits

Sym's birth can not be separated from the following open source projects:

Special thanks to security:

And other professionals to give great help!


Next generation community system, build for the future