Tuesday, 5 January 2016

I am rolling out my own discussion forum

After being banned from majority of the community forums I have decided to roll out my own discussion forum. There was the option of using other forum software which basically does the same job. There is the new Xenforo Community forum software which is being used by top forums like the physicsforums.com but Xenforo is not free. There are lots of other forum software in PHP but I don't like to maintain PHP code which is quite outdated compared to robust frameworks like Ruby on Rails and Express on NodeJS.

There are lots of options in Ruby on Rails and Discourse would have been the right choice but I don't think many people like their design. People still are very much used to the old vanilla vBulletin design when it comes to community software. There is NodeBB from the NodeJS community but I don't like their design either. There is Muut but I don't like my data being stored in their cloud storage. One of the advantages of rolling out your own forum is that you're in full control of your code and you can tweak it according to your own needs rather than being stuck due to design decisions of other software. The task is to preserve the old vanilla vBulletin layout but underneath it should be run by latest technologies like Ruby on Rails and AngularJS for responsiveness, high speed and good web standards.

The idea is to build a rest API either using Ruby on Rails or NodeJS. I have written rest API's in Ruby using the Grape gem before so it shouldn't take me much time to quickly roll out one but there is a strong attraction to lean towards JavaScript for both the back end as well as the front end but I don't have much experience with NodeJS so it would mean a long learning curve and more time. For the back end I am using MongoDB and one can safely model a threaded discussion as individual documents which should be pretty straight forward if you know the BSON fields. Since MongoDB 3.2 provides full text search there is no need for Elastic Search either. The intention is to consume the API's using a single page application framework like AngularJS but SPA's have issues with SEO's which is very much essential for a community forum. But once the rest API is ready the decision on how to consume it can be delayed according to the needs of your application.

I am already designing the screens using Twitter Bootstrap and have already bought a domain name for my forum. I have thought about the design solutions and it all looks good for a great forum to roll out.