{"id":15024393,"url":"https://github.com/rafalp/misago","last_synced_at":"2026-10-19T07:25:39.457Z","repository":{"id":3682093,"uuid":"4751958","full_name":"rafalp/Misago","owner":"rafalp","description":"Misago is fully featured modern forum application that is fast, scalable and responsive.","archived":false,"fork":false,"pushed_at":"2026-10-02T20:39:06.000Z","size":121411,"stargazers_count":2782,"open_issues_count":173,"forks_count":556,"subscribers_count":77,"default_branch":"main","last_synced_at":"2026-10-04T11:53:08.217Z","etag":null,"topics":["django","docker","forum","forums","htmx","python"],"latest_commit_sha":null,"homepage":"http://misago-project.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rafalp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.rst","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null},"funding":{"github":"rafalp"}},"created_at":"2012-06-22T14:24:02.000Z","updated_at":"2026-10-03T14:38:52.000Z","dependencies_parsed_at":"2026-09-15T23:23:37.776Z","dependency_job_id":null,"html_url":"https://github.com/rafalp/Misago","commit_stats":{"total_commits":5039,"total_committers":38,"mean_commits":"132.60526315789474","dds":0.03254614010716417,"last_synced_commit":"0c2661b149877a0cd387f991db086b05192cf7fa"},"previous_names":[],"tags_count":75,"template":false,"template_full_name":null,"purl":"pkg:github/rafalp/Misago","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafalp%2FMisago","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafalp%2FMisago/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafalp%2FMisago/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafalp%2FMisago/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rafalp","download_url":"https://codeload.github.com/rafalp/Misago/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafalp%2FMisago/sbom","scorecard":{"id":596867,"data":{"date":"2025-08-11","repo":{"name":"github.com/rafalp/Misago","commit":"619037a235d60fceb9e18ac4b15d9d1be5d56396"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"checks":[{"name":"Maintained","score":10,"reason":"23 commit(s) and 24 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Warn: no topLevel permission defined: .github/workflows/tests.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 1/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.rst:0","Info: FSF or OSI recognized license: GNU General Public License v2.0: LICENSE.rst:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish.yml:9"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'","Warn: branch protection not enabled for branch '0.39.x'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/rafalp/Misago/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/rafalp/Misago/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/rafalp/Misago/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/rafalp/Misago/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/rafalp/Misago/tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/rafalp/Misago/tests.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:4: pin your Docker image by updating python:3.12 to python:3.12@sha256:23e642ca5600c3c6925490bf500914abe411d944b237ac0c6c87af2cd091b8fd","Warn: pipCommand not pinned by hash: Dockerfile:31-33","Warn: pipCommand not pinned by hash: Dockerfile:31-33","Warn: pipCommand not pinned by hash: Dockerfile:31-33","Warn: pipCommand not pinned by hash: dev:204","Warn: pipCommand not pinned by hash: dev:207","Warn: pipCommand not pinned by hash: dev:210","Warn: pipCommand not pinned by hash: dev:214","Warn: pipCommand not pinned by hash: dev:223","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:20","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:36","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:37","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of  11 pipCommand dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 27 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":0,"reason":"67 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-9mvj-f7w8-pvh2","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-rmxg-73gg-4p98","Warn: Project is vulnerable to: GHSA-6c3j-c64m-qhgq","Warn: Project is vulnerable to: GHSA-gxr4-xjj5-5px2","Warn: Project is vulnerable to: GHSA-jpcq-cgw6-v4j6","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-r683-j2x4-v87g","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-fhg7-m89q-25r3","Warn: Project is vulnerable to: GHSA-4vvj-4cpr-p986","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-vc8w-jr9v-vj7f","Warn: Project is vulnerable to: GHSA-67mh-4wv8-2f99","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-92r3-m2mg-pj97","Warn: Project is vulnerable to: GHSA-c24v-8rfc-w8vw","Warn: Project is vulnerable to: GHSA-8jhw-289h-jh2g","Warn: Project is vulnerable to: GHSA-64vr-g452-qvp3","Warn: Project is vulnerable to: GHSA-9cwx-2883-4wfx","Warn: Project is vulnerable to: GHSA-vg6x-rcgg-rjx6","Warn: Project is vulnerable to: GHSA-x574-m823-4x7w","Warn: Project is vulnerable to: GHSA-4r4m-qw57-chr8","Warn: Project is vulnerable to: GHSA-xcj6-pq6g-qj4x","Warn: Project is vulnerable to: GHSA-356w-63v5-8wf4","Warn: Project is vulnerable to: GHSA-859w-5945-r5v3","Warn: Project is vulnerable to: PYSEC-2024-230 / GHSA-248v-346w-9cwc","Warn: Project is vulnerable to: PYSEC-2024-225 / GHSA-6vqw-3v5j-54x4","Warn: Project is vulnerable to: GHSA-79v4-65xg-pq4g","Warn: Project is vulnerable to: GHSA-h4gh-qq45-vh27","Warn: Project is vulnerable to: PYSEC-2024-102 / GHSA-5hgc-2vfp-mqvc","Warn: Project is vulnerable to: PYSEC-2024-68 / GHSA-795c-9xpc-xw6g","Warn: Project is vulnerable to: PYSEC-2025-47 / GHSA-7xr5-9hcq-chf9","Warn: Project is vulnerable to: PYSEC-2024-156 / GHSA-8498-2h75-472j","Warn: Project is vulnerable to: PYSEC-2025-37 / GHSA-8j24-cjrq-gr2m","Warn: Project is vulnerable to: PYSEC-2024-58 / GHSA-9jmf-237g-qf46","Warn: Project is vulnerable to: PYSEC-2024-59 / GHSA-f6f8-9mx6-9mx2","Warn: Project is vulnerable to: PYSEC-2024-67 / GHSA-jh75-99hh-qvx9","Warn: Project is vulnerable to: PYSEC-2024-157 / GHSA-m9g8-fxxm-xg86","Warn: Project is vulnerable to: PYSEC-2025-13 / GHSA-p3fp-8748-vqfq","Warn: Project is vulnerable to: PYSEC-2024-70 / GHSA-pv4p-cwwg-4rph","Warn: Project is vulnerable to: PYSEC-2025-1 / GHSA-qcgg-j2x8-h9g8","Warn: Project is vulnerable to: PYSEC-2024-56 / GHSA-qg2p-9jwr-mmqf","Warn: Project is vulnerable to: PYSEC-2024-69 / GHSA-r836-hh6v-rg5g","Warn: Project is vulnerable to: GHSA-rrqc-c2jx-6jgv","Warn: Project is vulnerable to: PYSEC-2024-47 / GHSA-vm8q-m57g-pff3","Warn: Project is vulnerable to: PYSEC-2024-57 / GHSA-x7q2-wr7g-xqmf","Warn: Project is vulnerable to: GHSA-gw84-84pc-xp82","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: GHSA-44wm-f244-xhp3","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: GHSA-2gr8-3wc7-xhj3","Warn: Project is vulnerable to: GHSA-2m57-hf25-phgg","Warn: Project is vulnerable to: GHSA-2c2j-9gv5-cj73","Warn: Project is vulnerable to: GHSA-f96h-pmfr-66vw","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: GHSA-48p4-8xcf-vxj5","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T23:21:05.033Z","repository_id":3682093,"created_at":"2025-08-20T23:21:05.034Z","updated_at":"2025-08-20T23:21:05.034Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38351316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-19T02:00:06.414Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django","docker","forum","forums","htmx","python"],"created_at":"2024-09-24T20:00:16.197Z","updated_at":"2026-10-19T07:25:39.433Z","avatar_url":"https://github.com/rafalp.png","language":"Python","funding_links":["https://github.com/sponsors/rafalp"],"categories":[],"sub_categories":[],"readme":"Misago\n======\n\n[![Test Coverage](https://coveralls.io/repos/github/rafalp/Misago/badge.svg?branch=master)](https://coveralls.io/github/rafalp/Misago?branch=master) ![Works on Python 3.12](https://img.shields.io/badge/python-3.12-blue.svg) [![Community Chat](https://img.shields.io/badge/chat-on_discord-7289da.svg)](https://discord.gg/fwvrZgB)\n\n\n**Development Status:** 🍌 [Bananas](https://en.wikipedia.org/wiki/Perpetual_beta) 🍌\n\nMisago 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.\n\n* **Homepage:** http://misago-project.org/\n* **Documentation:** https://misago.gitbook.io/docs/\n* **Code \u0026 BugTracker:** https://github.com/rafalp/Misago/\n\n\nScreenshots\n-----------\n\n[![Forum index](https://user-images.githubusercontent.com/750553/212570745-fff596f8-ff7d-45f2-a7c2-505e56d80a04.png)](https://misago-project.org)\n\n[![Thread view](https://user-images.githubusercontent.com/750553/212570742-52fa8c2c-a86e-4dd4-84b2-933ed7db41d3.png)](https://misago-project.org)\n\n\nProduction use\n--------------\n\nMisago implements all features considered \"must have\" on live internet forum:\n\n* Your users may register accounts, set avatars, change options and edit their profiles. They have the option to reset a forgotten password.\n* Sign in with Facebook, Google, Github, Steam, Blizzard.net or any other over 50 supported OAuth providers.\n* 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\u0026A 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.\n* Create categories together with unlimited number and depth of subcategories.\n* Write messages using either GitHub-flavoured markdown, BBCode subset, or both.\n* 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.\n* 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.\n* Ban system allows you to ban existing users as well as forbid certain user names, e-mails or IP addresses from registering accounts.\n* Permission system allowing you to control which features are available to users based on their rank, roles or category they are in.\n* 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.\n* Private threads feature allowing users to create threads visible only to them and those they've invited. \n* 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.\n* 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.\n* Post attachments complete thumbnailing and gif's animation removal.\n* Mark post in question thread as best answer, bringing basic Q\u0026A functionality.\n* 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.\n* Moderation queue for users and categories allowing you to moderate content before it becomes visible to other members of the community.\n* Custom theme developed with bootstrap.\n* Features and settings for achieving GDPR compliance.\n* Integrate forum with your site using implemented OAuth2 client and JSON API.\n\nEven more features will follow in future releases:\n\n* Forum-wide JS routing further reducing navigation times.\n* Replacing current API with GraphQL API for easier integrations and extending.\n* Plugin system to extend core package with new features.\n* WYSIWYM content editor for even easier post formatting.\n* Ranking system for forum search results based on post links, likes, author and thread importance.\n\n\nDevelopment\n-----------\n\nPreferred way to run Misago development instances on your machine is with [Docker](https://www.docker.com/community-edition#/download), which makes it easy to spin up arbitrary number of instances running different code with separate databases and dependencies besides each other.\n\nTo 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.\n\nAfter development server starts, visit the \u003chttp://127.0.0.1:8000/\u003e in your browser to see your Misago installation.\n\nAdmin Control Panel is available under the \u003chttp://127.0.0.1:8000/admincp/\u003e address. To log in to it use `Admin` username and `password` password.\n\nThe `./dev` utility implements other features besides the `init`. Run it without any arguments to get the list of available actions.\n\n\n### Running Misago in development without `dev`\n\nYou may skip `./dev init` and setup dev instance manually, running those commands:\n\n1. `docker compose build`: builds docker containers\n2. `docker compose run --rm misago python manage.py migrate`: runs migrations\n3. `docker compose run --rm misago python manage.py createsuperuser`: creates admin user\n4. `docker compose up`: starts dev server\n\n\n### Frontend\n\nWith exception of Admin Panel, Misago frontend relies heavily on React.js components backed by Django API. This application uses webpack for building.\n\nCurrently Misago's `package.json` defines following tasks:\n\n* `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.\n* `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.\n* `npm run prettier`: formats code with prettier.\n* `npm run eslint`: lints the code with eslint.\n\nTo 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.\n\nMisago defines template that allows you to include custom html and JavaScript code before Misago's JavaScript app is run, named `scripts.html`.\n\n\n### Admin\n\nAdmin assets are stored in `misago-admin` directory and deployed to `misago/static/misago/admin` directory on build.\n\nTo work on admin's JavaScript or CSS, `cd` to `misago-admin` and install dependencies with `npm install`. Now you can use following actions:\n\n* `npm run build`: does production build of assets, bundling and minifying JavaScript and CSS files.\n* `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.\n\n\n### Emails\n\nMisago uses [Mailpit](https://github.com/axllent/mailpit) to capture emails sent from the development instance.\n\nTo browse those emails, visit the \u003chttp://127.0.0.1:8025\u003e in your browser for the web interface.\n\n\n### Note for Windows users\n\nIf you are using Windows, you may see the following error during installation:\n\n```\n =\u003e ERROR [misago 8/8] RUN ./dev bootstrap_plugins\n------\n \u003e [misago 8/8] RUN ./dev bootstrap_plugins:\n0.385 /bin/sh: 1: ./dev: not found\n------\nfailed to solve: process \"/bin/sh -c ./dev bootstrap_plugins\" did not complete successfully: exit code: 127\n```\n\nThis 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.\n\n\nProviding feedback and contributing\n-----------------------------------\n\nIf you have found a bug, please report it either on the [issue tracker](https://github.com/rafalp/Misago/issues) or on the [project's forums](https://misago-project.org/c/bug-reports/29/).\n\nIf you want to contribute to project, please see the [contributing](./CONTRIBUTING.md) document.\n\nFor feature or support requests as well as general feedback please use the [official forums](https://misago-project.org). Your feedback means much to the project so please do share your thoughts!\n\nThere's also a [Discord server](https://discord.gg/fwvrZgB) for those looking for instant-messaging approach for getting in touch with Misago devs and users.\n\n\nAuthors\n-------\n\n**Rafał Pitoń** and ❤️ [contributors](https://github.com/rafalp/misago/graphs/contributors).\n\n* https://rpiton.com\n* https://github.com/rafalp\n* https://twitter.com/RafalPiton\n\n\nCopyright and license\n---------------------\n\n**Misago** - Copyright © 2025 [Rafał Pitoń](http://github.com/rafalp)\nThis program comes with ABSOLUTELY NO WARRANTY.\n\nThis is free software and you are welcome to modify and redistribute it under the conditions described in the license.\nFor the complete license, refer to LICENSE.rst\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frafalp%2Fmisago","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frafalp%2Fmisago","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frafalp%2Fmisago/lists"}