Misago is fully featured forum application written in Python and ES6, powered by Django and React.js
Python JavaScript CSS HTML Shell
l0ud Force LF line endings in bash scripts
Signed-off-by: l0ud <loudpl@gmail.com>
Latest commit de9c1e1 Jun 9, 2018
Failed to load latest commit information.
.tx Sync translation files with transifex Feb 24, 2018
extras Define devproject name only in compose (#984) Mar 31, 2018
frontend Merge branch '0.18.x' Jun 5, 2018
misago Merge branch '0.18.x' Jun 5, 2018
.dockerignore Tweaked docker setup a little, fixed eventual clashes in migration Mar 31, 2018
.gitattributes Force LF line endings in bash scripts Jun 9, 2018
.gitignore Some more tweaks for dev: set avatar on default superuser, fix fakeus… Mar 31, 2018
.isort.cfg fix #707: isort imports after cleanup Feb 9, 2017
.pylintrc Tweaked pylint Apr 22, 2018
.style.yapf some further yapf format tweaks Feb 22, 2017
.travis.yml Removed env vars from travis config May 16, 2018
Dockerfile Update Dockerfile Jun 9, 2018
LICENSE.rst Fixed formatting of license text Jan 30, 2015
MANIFEST.in fix #863: exclude extras dir from pypi releases Jun 1, 2017
README.rst Move docs to separate repo Jun 2, 2018
cleansource #702: more work on fixdictsformatting Feb 26, 2017
docker-compose.yaml Define devproject name only in compose (#984) Mar 31, 2018
initdev Tweak help message in initdev Apr 12, 2018
makemessages generated example en locale via makemssages script Jan 16, 2017
pyclean tweaked pyclean Nov 11, 2015
pycodestyle.py #702: more work on fixdictsformatting Feb 26, 2017
requirements.txt Update cron, template settings and requirements.txt May 19, 2018
runtests.py Use runtests.py instead of python runtests.py Jun 2, 2018
setup.py fix #945: decode readme as utf-8 in setup script Nov 26, 2017
upload fix #863: exclude extras dir from pypi releases Jun 1, 2017



Tests Result Test Coverage Works on Python 2.7, 3.5, 3,6 Community Chat

Development Status: Big changes happening on master branch, use latest release for working code.

Misago aims to be complete, featured and modern forum solution that has no fear to say 'NO' to common and outdated opinions about how forum software should be made and what it should do.


Forum index Thread view

Production use

As of now Misago implements all features considered "must have" on live internet forum:

  • Your users may register accounts, set avatars, change options and edit their profiles. They have option to reset forgotten password.
  • Sign in with Facebook, Google, Github, Steam, Blizzard.net or any other over 50 supported OAuth providers.
  • Site admins may require users to confirm validity of their e-mail addresses via e-mail sent activation link, or limit user account activation to administrator action. They can use custom Q&A challenge, ReCAPTCHA, Stop Forum Spam or IP's blacklist to combat spam registrations. Pletora of settings are available to control user account behaviour, like username lengths or avatar restrictions.
  • Create categories together with unlimited number and depth of subcategories.
  • Write messages using either GitHub flavoured markdown, BBCode subset, or both.
  • Presence features let site members know when other users are online, offline or banned. Individual users have setting to hide their activity from non-admins.
  • Complete moderation toolset allowing admin-approved moderators to edit, move, hide, approve, delete or close user posted content. This also includes option to delete or block user accounts or avatars.
  • Ban system allows you to ban existing users as well as forbid certain user names, e-mails or IP addresses from registering accounts.
  • Permission system allowing you to control which features are available to users based on their rank, roles or category they are in.
  • Post accurate read tracker that lets your users spot threads with new posts as well as let moderators spot unapproved replies and non-moderators spot approved posts.
  • Private threads feature allowing users to create threads visible only to them and those they've invited.
  • Python-based profile fields framework letting site owners to define custom fields for users to fill in complete with powerful customization options for custom requirements, display or validation logic.
  • Rich polls system, allowing polls with public and private voters, single and multiple choices as well as ones that allow vote change or limit voting tp limited period of time.
  • Post attachments complete thumbnailing and gif's animation removal.
  • Mark post in question thread as best answer, bringing basic Q&A functionality.
  • Posts edits log allowing you to see how user messages used to look in past as well as revert function protecting you from malignant users emptying their posts contents.
  • Moderation queue for users and categories allowing you to moderate content before it becomes visible to other members of the community.
  • Custom theme developed over bootstrap.
  • Optionally enable users to delete their own account.
  • Anonymise user data on their account's deletion.

Even more features will follow in future releases:

  • Achievements and awards system.
  • Content reporting for users to report offensive content.
  • Forum-wide JS routing further reducing navigation times.
  • IP search for moderators to find sock puppets or bot nets.
  • Notifications for users to notice content and events of concern faster.
  • OAuth2 server for those looking to use Misago as auth provider for other apps.
  • Warning system for easy tracking users history of infractions and offenses.
  • WYSIWYM content editor for even easier post formatting.
  • Ranking system for forum search results based on post links, likes, author and thread importance.
  • Post reactions in place of likes.

...and more!

If you are looking into using Misago to run live forum, you are absolutely invited to, but please keep in mind that Misago is relatively immature software that may contain serious bugs or issues as well as quirks and lackings thay may take time to resolve, despite best efforts.


Preferred way to setup Misago for local development is with Docker, which makes it easy to spin up arbitrary number of instances running different code with separate databases and dependencies one besides the other with just three terminal commands.

To start, clone repository to your machine and then run following commands:

docker-compose build
docker-compose run --rm misago initdev
docker-compose up

Those commands will install necessary dependencies, create new Misago project devproject that you may use for development as well as start Django developer server, enabling you to visit in your browser and see the forum index. You should now be able to sign in with the superuser account, using Admin username and password password.

Admin Control Panel is available under the url.

manage.py is available through Docker's run command:

docker-compose run --rm misago python manage.py

Docker also allows you to run tests suite:

docker-compose run --rm misago python runtests.py

If you'll ever want to destroy Docker setup because you no longer need it, run this command:

docker-compose down


Tests Result Tests Result

With exception of Admin Panel, Misago frontend relies heavily on React.js components backed by Django API. This application relies on custom Gulp.js-based toolkit for development. As of current, Misago's gulpfile.js defines following tasks:

  • build does production build of Misago's assets, concating and minifying javascripts, css and images, as well as moving them to misago/static directory
  • watch does quick build for assets (concat assets into single files, compile less, deploy to misago/static but don't minify/optimize) as well as runs re-build when less/js changes
  • watchstyle does quick build of less files, and re-builds them when they change
  • test runs Mocha.js tests suite for Misago's javascript

To start work on custom frontend for Misago, fork and install it locally to have development forum setup. You can now develop custom theme by modifing assets in frontend directory, however special care should be taken when changing source javascripts.

Misago defines template that allows you to include custom html and js code before Misago's JavaScript app is ran, named scripts.html.

Bug reports, features and feedback

If you have found bug, please report it on issue tracker.

For feature or support requests as well as general feedback please use official forum instead. Your feedback means much to the project so please do share your thoughts!

There's also Gitter for those looking for intant-messaging approach for discussing Misago development.


If you have corrected spelling, wrote new tests or fixed a bug, feel free to open pull request.

Many issues are open for takers. If you've found one you feel you could take care of, please announce your intent in issue discussion before you start working. That way situations when more than one person works on solving same issue can be avoided.


Rafał Pitoń

English sentences used within misago.faker.phrases were extracted from National Aeronautics and Space Administration Solar System Exploration Portal and are not copyrighted as per Media and content usage guidelines.

Copyright and license

Misago - Copyright © 2018 Rafał Pitoń This program comes with ABSOLUTELY NO WARRANTY.

This is free software and you are welcome to modify and redistribute it under the conditions described in the license. For the complete license, refer to LICENSE.rst