Skip to main content

Misago is modern, fully featured forum application written in Python and ES6, powered by Django and React.js. It works out of the box and can be run alone or be connected to existing site with built in OAuth 2 client.

Project description

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 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 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 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 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 http://127.0.0.1:8000/ in your browser to see your Misago installation.

Admin Control Panel is available under the http://127.0.0.1:8000/admincp/ 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 defines following taks:

  • npm run build: does production build of Misago's assets, concating and minifying javascripts, css and images, as well as moving them to misago/static directory.
  • npm run start: 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.
  • npm run prettier: formats code with prettier.
  • npm run eslint: lints 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 javascripts.

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

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

Rafał Pitoń and ❤️ contributors.

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 © 2023 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

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Misago-0.38.0rc4.tar.gz (5.0 MB view details)

Uploaded Source

Built Distribution

Misago-0.38.0rc4-py3-none-any.whl (5.6 MB view details)

Uploaded Python 3

File details

Details for the file Misago-0.38.0rc4.tar.gz.

File metadata

  • Download URL: Misago-0.38.0rc4.tar.gz
  • Upload date:
  • Size: 5.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for Misago-0.38.0rc4.tar.gz
Algorithm Hash digest
SHA256 5e38a3d90b2cc30d98514cb00e67f4b301bab82d77de8ee2c2d8eb39590b30bd
MD5 caabc1f225b5e74a9ba236123fa800b9
BLAKE2b-256 149841682f478a626e2a085000b9abe2c24c4b479a2c386edbeb54a96d51d205

See more details on using hashes here.

File details

Details for the file Misago-0.38.0rc4-py3-none-any.whl.

File metadata

  • Download URL: Misago-0.38.0rc4-py3-none-any.whl
  • Upload date:
  • Size: 5.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for Misago-0.38.0rc4-py3-none-any.whl
Algorithm Hash digest
SHA256 28418a4ebbb39448ca4cc15d9fb10353cf12a3ec461272ce71b469be655c3548
MD5 a7bdfffd5b6b457d7f73ab51021e1574
BLAKE2b-256 173b94368a7bc82e2b633240086fd64dc5817b9402f5938672ed3a75f797deb5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page