Challenge Overview
Challenge objectives
- Node app that runs as a processor, watching a kafka queue and interfacing with Rocket.chat to build private groups to potentially replace the challenge forums
- This challenge will add support for Vanilla Forums, in addition to Rocket.Chat.
Project background
We're looking at potential replacements for the Topcoder forums, and Vanilla Forums is something we'd like to investigate further. Vanilla Forums is an open-source forum application that has nice features and can interface with Topcoder's authentication platform. We want to build a processor that will create private groups and categories in Vanilla for challenges, allowing us to use Vanilla in a similar fashion to the current forum.Technology stack
- Node.js running on Heroku
- Kafka
- Vanilla forums
Installing Vanilla
You can download the Open Source Vanilla installation here, which is what we'll target: https://open.vanillaforums.com/download
If you'd like to install your own Vanilla instance, you can install it locally. I used the instructions here, but note that in Ubuntu 18.04, with the latest Vanilla code, I had to install additional PHP dependencies. https://websiteforstudents.com/install-vanilla-forums-on-ubuntu-18-04-16-04-18-10-with-apache2-mariadb-and-php-7-2-support/
Details will be provided in the forum about how to connect to the Topcoder development environment and the Kafka queues there. Alternatively, you can use your own Kafka installation and messages that match the same format published by the Topcoder APIs.
Current Codebase
The current codebase is available here: https://github.com/topcoder-platform/challenge-forum-processorRequirements
The goal of the integration is to handle:
* Challenge created (creating a category in Vanilla, along with specific discussions for things like "Code Questions" and "Code Documents")
* User registered for a challenge (add associated user to category)
* User unregistered for a challenge (remove associated user from category)
We want to also include the same challenge overview information we add into the group for Rocket.chat, in the info and topic fields, but in a way that fits Vanilla best. You are free to suggest how you think the overview and welcome information should be added to Vanilla.
The initial Rocket.chat implementation didn't necessarily follow the existing Topcoder forums structure because Rocket.chat isn't necessarily a forum app. For this challenge, because Vanilla is a true forum application, we can more closely match what the structure is for the existing Topcoder forums. Use the existing Topcoder forums as your inspiration for how things should work.
Relevant tickets for Rocket.chat that we'll also implement for Vanilla:
- https://github.com/topcoder-platform/challenge-forum-processor/issues/1
- https://github.com/topcoder-platform/challenge-forum-processor/issues/2
- https://github.com/topcoder-platform/challenge-forum-processor/issues/3
Relevant Vanilla API links
- https://success.vanillaforums.com/kb/articles/41-authentication-with-personal-access-tokens
- https://docs.vanillaforums.com/developer/apiv2-reference/
Configuration
We'd like the ability to configure all necessary Vanilla connections and endpoints similar to how we do for Rocket.chatNote that the Vanilla API is accessible using a Vanilla-generated personal access token. This token should be configurable in Heroku as well.
Deployment guide and validation document
You must provide a new README.md that covers:
- Heroku deployment (of the processor)
- Configuration for the app
You must provide a Validation.md that covers:
- How to validate the Vanilla integration, in as much detail as possible.
No video is required for this challenge
What to submit
- A patch file against the HEAD of https://github.com/topcoder-platform/challenge-forum-processor that implements the requirements above. Make sure to test your patch file!
- A validation.md