I stumbled upon Discourse yesterday and I am blown away by its features, open source nature, plugins, theme-components and damn good UI. I am building a skills-evaluation platform on WordPress and the last piece in my product vision is a vibrant community and Discourse fits right in. Thank you for making this gem of a product!
To set this up and get going, I have a few questions and would appreciate your help.
- My site is hosted on Siteground and they can’t give me root access because they are on google so I cannot install Discourse there.
- I have written custom code in PHP to build a dynamic site where users earn skill points and rewards for showing skills on the platform. For example, user earn points when they share a projects and tag it with specific skills. The skill tags are defined before hand by me and every skills is assigned points and data is stored in custom tables. This helps me to show data per skill per user over time.
- I am using Gsuite for my email setup
- I want to have full control so would like to self-host discourse
- I do not have chat feature enabled on WordPress (no plugin installed) but would like the chat feature on Discourse.
- I want to build a similar skills recognition and points system for activity in Discourse. For example, if user1 asks a question (and tags the question with skill tags) and user2 answers it and user1 marks it as solved, then user2 gets skill points for assigned skill tags. Or user1 submits a high quality post and lot of users love it, then user1 receives points for that post. The closest analogy is a mini version of stackoverflow but for a very niche community.
- I have seen people use Mailgun for emails on Discourse. Is there any issue with using Gsuite? I am new to this so would appreciate any long term insights.
- I don’t have a hosting provider for Discourse but everybody seems to rate DO very high. From what I have shared, do you see any issues with using DO?
- Is there a recommended chat tool that works well with WordPress and Discourse? I am not looking for anything fancy for chat so something that is light weight and does the job would be appreciated.
- How would you recommend to sync tags in WordPress with tags in Discourse. Is it even possible? It is mainly important for skills as I want all data from the forum and project activity to be combined to create a skills portfolio for the user.
- How can I ensure real time data transfer between Discourse and WordPress i.e., 1) If user submits a project on the site then skill points update in Discourse. 2) If user make good contribution in Discourse, skill points update in WordPress.
How would this be possible with data in two different databases (Postgres and MYSQL/ Maria), Two different hosting providers (Siteground and DO (may be)) and two different backends (PHP and RUBY ON RAILS). Are there APIs or hooks I can use to transfer data between the two applications? Or is it all taken care off by the WP-Discourse plugin? May be I need to run a periodic jobs that “sync” the data across the two applications?
I am not sure how complex this is given the flexibility of Discourse and WordPress. I am happy to keep source of truth data in the WordPress database if that’s what it takes to get this setup. I can code in PHP and I am up for learning Ruby of Rails if that’s what it takes to build a dynamic and seamless incentive and skills rating system.
The bottom line is - users don’t care where the site is and where the forum is and I want to keep it that way by giving them one single experience across both applications.
Edit: I did more research to understand what Discourse really stand for and saw two great talks by Jeff. Highly recommended for anyone who is new to Discourse
Now I understand better the difference between the Stack Overflow and Discourse and it seems like I want to build a community closer to a forum but with some of control and specificity of Stack Overflow. It is hard to explain the specifics at this stage but it seems like data transfer between WordPress and Discourse would be essential to build the product I want.