A clean, responsive, fully-fledged Forum Software

Misago is a perfect and cost-effective Forum solution

Posted by creatic on Fri 14 June 2019

The need for a Forum

Forum webpages are around for decades now. They were the pioneers of the modern social media at the dawn of the so called Web 2.0. Time has passed, but still they preserved their place at the backyard of news pages, local web portals, education sites, fanclub pages, etc.

As Django is my favourite framework for more complex projects I came across Misago when one of my clients needed a Forum page. Misago is a modern, responsive software based on Django and React. A demo of Misago itself is available on https://misago-project.org/

Installation

The preferred way to install Misago is using Docker. If you are not familiar with Docker, you can clone the development Misago repo, too. After the installation it does not make much of a difference. The production version of Misago has a separate GitHub repo. Clone it and follow the Installation steps.

I prefer to run web services under different user than root. To work with Docker you have to add that user to the docker group.

Another caveat is that setting up the DNS properly is a must before running the

./appctl setup

command, because Misago uses Let's Encrypt for the SSL setup which in turn checks the availability of the domain. Additionally if you use the www.* sub-domain, too that must be also accessible. You can do it easily with

ping yourdomain.com

or

nslookup yourdomain.com

commands.

Customization

Customizing Misago is multi-layered process. Logging into /admincp with the newly created admin account one can change some basic settings, like the Forum name, Logo, Header, Footer, etc.

In case you want to create bigger changes you hate to clone and run the development version of Misago The less files are located in frontend/style directory and processed using gulp. (See frontend/gulpfile.js) The Django templates are in misago/templates directory.

Misago uses both the static Django templates and React for dynamic frontend. So you have to make the changes in both parts if you do major upgrades. To change the actual files you can do it in-place, but I actually like to keep the original versions intact so I usually add a theme directory to misago folder and add this directory to the TEMPLATES settings variable (see devproject/settings.py), like:

``` TEMPLATES = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [os.path.join(os.path.join(os.path.join(os.path.dirname(BASE_DIR), 'misago'), 'theme'), 'templates')], "APP_DIRS": True, ...

```

This change enables copying the original files to the theme directory, modify them and still have a possibility to compare with the original ones later.

Don't forget to run manage.py collectstatic when changing the css!

Additional Info & Help

Misago has a development forum, so in any case you can visit https://misago-project.org/ to find answers to your questions.

tags: django, react, forum