Hi, guys! I’m looking at using Discourse for a community site and had a few questions. Hope someone can guide me with this.
Workflow from development to production
There are guides to setting up your own development environment using Vagrant, and deploying to production using Docker. What’s the usual way to test your changes in development before pushing them to production? Would pushing via git work? I’m familiar with Vagrant but just started reading up on Docker, so I’m not sure.
Customisations and plugins
I’ve read that at no point should you be customising the core files of Discourse - everything should be through plugins. Is my understanding here correct? On that note, I would assume that I should test each new Discourse update in development to ensure it doesn’t break any customisations I make before updating the production version.
The specific customisations I’m planning
For reference, here is a list of features that we plan to have. Are these all possible via plugins? If not, what are my alternatives?
Wordpress blog with sign-in integrated with Discourse (I believe this already exists).
Additional user profile fields, some of which will be data pulled via YouTube/Twitch/Steam API after user has associated his profile with those accounts.
Customised search page. While the current search feature is pretty handy, we’d need a special search page that only some users can access. In terms of layout, think matchmaking sites like OkCupid, so something with filters at the top and the results paginated below. I could code this sort of page on my own, but wondering whether an additional page could work as a plugin for Discourse.
Gamification features. The Badges system sounds similar. This is something we plan to have at a later stage, but basically some way the site can provide lists of activities that a user can fulfill to earn points. Some of these activities may require admin to verify and award points (e.g. via submission).
I’d really like to use Discourse (it looks pretty slick!) but need some assurance that I won’t end up hitting a brick wall trying to implement some of the features I’ve mentioned.
Thanks in advance!