Misago is a free, open source community platforms project written in Python and released under GPL-2.0. It has 2,776 GitHub stars, 557 forks and 171 open issues, and was last pushed 6 hours ago. On this registry it ranks #8 of 14 tracked projects in Community Platforms, with 5 head-to-head comparisons available.

What is Misago?

What it is

Misago is a Python and Django forum application for building online community forums. It lives in the Python and Django web ecosystem and presents itself as a modern forum platform that challenges outdated forum software opinions.

The concrete problem it addresses is running a feature-rich forum with registration, profile management, moderation, permissions, and content workflows in one application. Its README describes the project as aiming to be complete, featured, and modern, while warning that its development status is perpetual beta.

Key capabilities

  • It supports user accounts, password reset, avatars, profile options, and sign-in through Facebook, Google, Github, Steam, Blizzard.net, or more than 50 OAuth providers.
  • It lets administrators require email confirmation, limit activation to an administrator action, and use custom challenges, ReCAPTCHA, Stop Forum Spam, or IP blacklists against spam registrations.
  • It provides unlimited category depth, GitHub-flavoured Markdown, a BBCode subset, and post attachments with thumbnailing and GIF animation removal.
  • It includes moderation queues, moderator actions for editing, moving, hiding, approving, deleting, or closing posts, account blocking, avatar deletion, bans on usernames, emails, and IP addresses, and permission controls based on rank, roles, or category.
  • It offers presence indicators, a read tracker, private threads, custom Python-based profile fields, rich polls, best-answer marking, and edit logs with revert support.
  • It integrates with another site through an OAuth2 client and JSON API, and includes GDPR compliance settings.

Who uses it and how

  • Community operators can use it as the main discussion platform for a site, with users registering, creating threads, replying, and tracking new posts.
  • Moderators can use built-in queues and post tools to review content before publication, move or close threads, hide posts, and revert malicious edits.
  • Site owners can connect forum accounts to existing identity providers through OAuth, while using email confirmation and anti-spam services to control registrations.
  • Administrators can organize discussions into nested categories, set per-category permissions, and run polls or question-and-answer threads with best-answer marking.

Getting started

The README links to documentation and code for setup; the topic list indicates Docker deployment.

When to use it — and when not to

Misago is useful when a self-hosted Python and Django forum needs built-in moderation, permissions, OAuth sign-in, and content workflows in one GPL-2.0 application. It is less suitable when an operator needs a stable release outside perpetual beta or needs future features such as a plugin system, GraphQL API, forum-wide JS routing, or WYSIWYM editing. Self-hosters must operate implied services, including email delivery, external OAuth providers, and anti-spam integrations such as ReCAPTCHA or Stop Forum Spam.

project readme (upstream, from github) — read inline

Misago

Test Coverage Works on Python 3.12 Community Chat

Development Status: 🍌 Bananas 🍌

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.

Screenshots

Forum index

Thread view

Production use

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 the option to reset a 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 an activation link sent by email, 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. Plethora of settings are available to control user account behavior, 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 to a 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 with bootstrap.
  • Features and settings for achieving GDPR compliance.
  • Integrate forum with your site using implemented OAuth2 client and JSON API.

Even more features will follow in future releases:

  • Forum-wide JS routing further reducing navigation times.
  • Replacing current API with GraphQL API for easier integrations and extending.
  • Plugin system to extend core package with new features.
  • WYSIWYM content editor for even easier post formatting.
  • Ranking system for forum search results based on post links, likes, author and thread importance.

Development

Preferred way to run Misago development instances on your machine is with Docker, which makes it easy to spin up arbitrary number of instances running different code with separate databases and dependencies besides each other.

To start, clone the repository and run ./dev init command in your terminal. This will build necessary docker containers, install python dependencies and initialize the database. After command does its magic, you will be able to start development server using the docker compose up command.

After development server starts, visit the in your browser to see your Misago installation.

Admin Control Panel is available under the address. To log in to it use Admin username and password password.

The ./dev utility implements other features besides the init. Run it without any arguments to get the list of available actions.

Running Misago in development without dev

You may skip ./dev init and setup dev instance manually, running those commands:

  1. docker compose build: builds docker containers
  2. docker compose run --rm misago python manage.py migrate: runs migrations
  3. docker compose run --rm misago python manage.py createsuperuser: creates admin user
  4. docker compose up: starts dev server

Frontend

With exception of Admin Panel, Misago frontend relies heavily on React.js components backed by Django API. This application uses webpack for building.

Currently Misago's package.json defines following tasks:

  • npm run build: does production build of Misago's assets, bundling and minifying JavaScript, CSS and images, as well as moving them to the misago/static/misago directory.
  • npm run start: does quick build for assets:bundling, compiling less, deployment to misago/static/misago. Doesn't minify/optimize. Runs re-build when less/js file changes.
  • npm run prettier: formats code with prettier.
  • npm run eslint: lints the code with eslint.

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 modifying assets in frontend directory, however special care should be taken when changing source JavaScript files as no test suite for those exists.

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

Admin

Admin assets are stored in misago-admin directory and deployed to misago/static/misago/admin directory on build.

To work on admin's JavaScript or CSS, cd to misago-admin and install dependencies with npm install. Now you can use following actions:

  • npm run build: does production build of assets, bundling and minifying JavaScript and CSS files.
  • npm run dev: does quick build for JavaScript and CSS assets, only bundling but not minifying. Also does a rebuild when one of the files changes.

Emails

Misago uses Mailpit to capture emails sent from the development instance.

To browse those emails, visit the in your browser for the web interface.

Note for Windows users

If you are using Windows, you may see the following error during installation:

 => ERROR [misago 8/8] RUN ./dev bootstrap_plugins
------
 > [misago 8/8] RUN ./dev bootstrap_plugins:
0.385 /bin/sh: 1: ./dev: not found
------
failed to solve: process "/bin/sh -c ./dev bootstrap_plugins" did not complete successfully: exit code: 127

This error is caused by the dev file having its line endings converted from Unix format (LF) to Windows (CRLF) by git when you cloned the repository. To fix this, disable the automatic conversion of line endings in your git configuration and then clone the repository again.

Providing feedback and contributing

If you have found a bug, please report it either on the issue tracker or on the project's forums.

If you want to contribute to project, please see the contributing document.

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

There's also a Discord server for those looking for instant-messaging approach for getting in touch with Misago devs and users.

Authors

readme truncated — read the full docs on github

Frequently asked questions

Is Misago free to use?

Misago is open source under the GPL-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Misago do?

Misago is fully featured modern forum application that is fast, scalable and responsive.

What is Misago written in?

Misago is primarily written in Python. Its source is publicly available at https://github.com/rafalp/Misago, and it has 2,776 GitHub stars.