- Introduction
- Features
- Good editors
- Intelligent and flexible information architecture
- To meet the diverse needs of post
- Humanized interactive replies
- User personalization
- Edit history and anonymous posting
- Search engine friendly
- Real-time message notification
- Fun activities
- Powered management background
- Open content API
- Integrated cloud mail service
- Integrated cloud search service
- Roadmap
- Installation
- License
- Contribution
- Feeling
- Credits
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.
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
Personal maintenance:
Company maintenance:
If you build it, you are welcome to add your site to this list by Pull Request :-p
Specific function point details can be viewed at Sym 功能点脑图, the following lists the main features of Sym, and illustrates why Sym is modern.
- 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
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
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.
- 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
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.
Post can be updated, but each update will produce a history of editing, visitors can see and compare the changes in its content. There is no support for subsequent replies update, will join, please look forward to.
Posts and replies can be used to publish anonymous identity, you know.
- 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
- 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
- receive attendance awards, receive an active reward yesterday
- Shanghai Lottery
- Word (?)
- Snake
Follow up will continue to add some fun online games.
- 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
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.
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
- 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.
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.
Record the achievements of the users and the contribution to the community.
- JDK8
- Maven3+
- MySQL5.5+
- Jetty9 or Tomcat9
- Download source code
- to modify the database after extracting
src/main/resources/local.properties
configuration, and create a database - may need to modify the
latke.properties
port for container port - may need to modify the
init.properties
administrator account - use
mvn install
to build - 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 配置剖析
- image upload the default is to upload the server locally, to use 七牛 can be configured in the
qiniu.*
attributesymphony.properties
- mail is sent using SendCloud, you need to configure the
sendcloud.*
attribute insymphony.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.
There is no difference between a commercial license and an open source license, and you can choose one of the following two ways.
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.
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 $2000, please contact QQ 845765 or email (DL88250@gmail.com) for detailed consultation.
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:
- to Sym official discussion area post (Recommended Practice)
- new a issue
- join Sym development support QQ group 17370164
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] (https://hacpai.com/article/1443685401909), 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 社区价值生态
Sym's birth can not be separated from the following open source projects:
- jQuery: Front end JavaScript tool library
- CodeMirror: Front end Markdown editor kernel
- Highlight.js: Front end code highlighter
- emojify.js: Front end Emoji tool library
- APlayer: Front end audio library
- ECharts: Front end interactive chart library
- MathJax: Front end Math rendering library
- SoundRecorder: Front end HTML sound recorder
- ZeroClipboard: Front end clipboard
- JavaScript MD5: Front endJavaScript MD5
- ReconnectingWebSocket: Front end WebSocket reconnecting
- to-markdown: Front end HTML to Markdown
- UAParser.js: Front end User-Agent parser
- Sass: Front end CSS preprocessor
- jsoup: Java HTML parser
- pegdown: Java Markdown parser
- Apache Commons: Java tool library
- Jodd: Java tool library
- emoji-java: Java Emoji tool library
- User-Agent-Utils: Java User-Agent parser
- Druid: Java database connection pool
- FreeMarker: popular Java template engine
- Latke: full-stack Java Web framework
- NetBeans: wonderful IDE
- IntelliJ IDEA: another wonderful IDE