Metadata-Version: 2.5
Name: FlaskBB
Version: 3.0.0rc2
Summary: A classic Forum Software in Python using Flask.
Project-URL: Homepage, https://github.com/flaskbb/flaskbb
Project-URL: Documentation, https://flaskbb.readthedocs.io/en/latest/
Project-URL: Repository, https://github.com/flaskbb/flaskbb
Project-URL: Issues, https://github.com/flaskbb/flaskbb/issues
Project-URL: Changelog, https://github.com/flaskbb/flaskbb/blob/master/CHANGES.md
Author-email: Peter Justin <peter.justin@outlook.com>
Maintainer-email: Peter Justin <peter.justin@outlook.com>
License-Expression: BSD-3-Clause
License-File: LICENSE
Keywords: community,flask,forum,social
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Flask
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.12
Requires-Dist: alembic>=1.20.0
Requires-Dist: attrs>=26.1.0
Requires-Dist: babel>=2.18.0
Requires-Dist: blinker>=1.9.0
Requires-Dist: celery>=5.6.3
Requires-Dist: click-log>=0.4.0
Requires-Dist: click-plugins>=1.1.1.2
Requires-Dist: click-repl>=0.4.0
Requires-Dist: click>=8.5.0
Requires-Dist: email-validator>=2.3.0
Requires-Dist: flask-alembic>=3.2.0
Requires-Dist: flask-allows2>=1.3.0
Requires-Dist: flask-babelplus>=2.5.0
Requires-Dist: flask-caching>=2.5.1
Requires-Dist: flask-debugtoolbar-warnings>=0.1.0
Requires-Dist: flask-debugtoolbar>=0.16.0
Requires-Dist: flask-limiter>=4.1.1
Requires-Dist: flask-login>=0.6.3
Requires-Dist: flask-mail>=0.10.0
Requires-Dist: flask-sqlalchemy>=3.1.1
Requires-Dist: flask-themes2>=1.0.1
Requires-Dist: flask-wtf>=1.3.0
Requires-Dist: flask>=3.1.3
Requires-Dist: flaskbb-plugin-conversations>=3.0.4
Requires-Dist: flaskbb-plugin-portal>=3.0.2
Requires-Dist: jinja2>=3.1.6
Requires-Dist: markupsafe>=3.0.3
Requires-Dist: mistune>=3.3.4
Requires-Dist: pillow>=12.3.0
Requires-Dist: pluggy>=1.6.0
Requires-Dist: pygments>=2.21.0
Requires-Dist: pyjwt>=2.14.0
Requires-Dist: pytz>=2026.2
Requires-Dist: redis>=8.1.0
Requires-Dist: requests>=2.34.2
Requires-Dist: sqlalchemy>=2.1.1
Requires-Dist: typing-extensions>=4.16
Requires-Dist: unidecode>=1.4.0
Requires-Dist: werkzeug>=3.1.8
Requires-Dist: wtforms-sqlalchemy>=0.4.2
Requires-Dist: wtforms>=3.2.2
Provides-Extra: gunicorn
Requires-Dist: gunicorn>=26.0.0; extra == 'gunicorn'
Provides-Extra: mysql
Requires-Dist: pymysql>=1.2.0; extra == 'mysql'
Provides-Extra: postgres
Requires-Dist: psycopg[binary]>=3.3.0; extra == 'postgres'
Description-Content-Type: text/markdown

<p align="center">
  <a href="https://flaskbb.com">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/flaskbb/flaskbb/master/docs/_static/logo-full-dark.svg">
      <img src="https://raw.githubusercontent.com/flaskbb/flaskbb/master/docs/_static/logo-full-light.svg" alt="FlaskBB" height="72">
    </picture>
  </a>
</p>

<p align="center">
  <strong>A classic forum software in Python using Flask.</strong>
</p>

<p align="center">
  <a href="https://github.com/flaskbb/flaskbb/actions/workflows/tests.yml"><img src="https://github.com/flaskbb/flaskbb/actions/workflows/tests.yml/badge.svg" alt="Build Status"></a>
  <a href="https://codecov.io/gh/flaskbb/flaskbb"><img src="https://codecov.io/gh/flaskbb/flaskbb/branch/master/graph/badge.svg" alt="Coverage"></a>
  <a href="https://pypi.org/project/FlaskBB/"><img src="https://img.shields.io/pypi/v/flaskbb.svg" alt="PyPI"></a>
  <a href="https://pypi.org/project/FlaskBB/"><img src="https://img.shields.io/pypi/pyversions/flaskbb.svg" alt="Python Versions"></a>
  <a href="https://github.com/flaskbb/flaskbb/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-BSD--3--Clause-blue.svg" alt="License"></a>
  <a href="https://matrix.to/#/#flaskbb:matrix.org"><img src="https://img.shields.io/badge/[matrix]-%23flaskbb%3Amatrix.org-blue" alt="Matrix"></a>
</p>

<p align="center">
  <a href="https://flaskbb.com">Website</a> -
  <a href="https://flaskbb.readthedocs.io">Documentation</a> -
  <a href="https://github.com/flaskbb/flaskbb/blob/master/CHANGES.md">Changelog</a> -
  <a href="https://github.com/flaskbb/flaskbb/issues">Issues</a>
</p>

---

FlaskBB is a forum software written in Python on top of the
[Flask](https://flask.palletsprojects.com) web framework. It aims to be a
classic message board with a modern look, and to stay small enough that it is
easy to host, theme and extend.

<p align="center">
  <img src="https://raw.githubusercontent.com/flaskbb/flaskbb/master/docs/_static/index.webp" alt="FlaskBB forum index with the Aurora theme" width="800">
</p>


## Features

- **Forums, topics and posts** with categories, unread tracking and a topic tracker
- **Markdown** posts with syntax highlighting, emoji and an editor toolbar
- **Attachments and avatars** that users can upload and admins can manage
- **Full-text search** for PostgreSQL and SQLite, extendable through plugins
- **Group based permissions** and per-forum moderators
- **Admin panel** for users, groups, forums, reports, plugins and settings
- **Plugin system** built on [pluggy](https://pluggy.readthedocs.io), the library behind pytest's plugins
- **Themeable**, ships with the Aurora theme in a light and a dark variant
- **Command line interface** for installing, serving and managing users, groups and plugins
- **i18n** with translations for more than a dozen languages


## Quick start

### Running with Docker

Release images are published to the GitHub Container Registry for
linux/amd64 and linux/arm64:

```bash
docker pull ghcr.io/flaskbb/flaskbb:latest
```

The repository contains a complete release stack with PostgreSQL, Valkey,
a Celery worker and gunicorn:

```bash
git clone https://github.com/flaskbb/flaskbb.git
cd flaskbb
cp docker/.env.example docker/.env
```

Set `SECRET_KEY`, `POSTGRES_PASSWORD` and the `ADMIN_*` variables in
`docker/.env`, then start it:

```bash
docker compose -f docker/docker-compose.yaml up -d
```

The forum is served on [localhost:8000](http://localhost:8000). See the
[release guide](docker/README.md) for configuration and reverse proxy setup,
or the [development guide](docker/DEVELOPMENT.md) to run from this checkout.

### Running from source

FlaskBB requires Python 3.12 or newer and uses [uv](https://docs.astral.sh/uv/)
to manage its environment.

```bash
git clone https://github.com/flaskbb/flaskbb.git
cd flaskbb
make devconfig
make install
make run
```

`make install` asks for the administrator's username, email and password.
Afterwards visit [localhost:5000](http://localhost:5000).

For a production setup with gunicorn, a reverse proxy, Redis and Celery,
follow the [deployment guide](https://flaskbb.readthedocs.io/en/latest/production/deployment.html).


## Plugins

Plugins are regular Python packages that are discovered through entry points.
Newly installed plugins are disabled until they are enabled in the admin panel
or with the CLI:

```bash
uv pip install flaskbb-plugin-like
uv run flaskbb plugins install like
uv run flaskbb plugins enable like
```

Browse available plugins and themes in the
[extension registry](https://flaskbb.com/registry/).

To write your own, start with the
[plugin development guide](https://flaskbb.readthedocs.io/en/latest/development/plugin/index.html)
or generate a skeleton with
[cookiecutter-flaskbb-plugin](https://github.com/sh4nks/cookiecutter-flaskbb-plugin).
Themes can be scaffolded the same way with
[cookiecutter-flaskbb-theme](https://github.com/sh4nks/cookiecutter-flaskbb-theme).


## Community

- Ask questions and discuss development in the [#flaskbb:matrix.org](https://matrix.to/#/#flaskbb:matrix.org) chat
- Report bugs and request features in the [issue tracker](https://github.com/flaskbb/flaskbb/issues)


## Contributing

Contributions of any size are welcome. Read [CONTRIBUTING.md](CONTRIBUTING.md)
before opening a pull request. The short version:

```bash
uv sync
make test
make format
```

Translations are managed on [Weblate](https://hosted.weblate.org/projects/flaskbb/). See the
[localization guide](https://flaskbb.readthedocs.io/en/latest/development/localization.html)
for adding a new language.


## License

FlaskBB is licensed under the [BSD 3-Clause License](LICENSE). Code adapted
from other projects is listed in [NOTICE](NOTICE), and the people behind
FlaskBB are listed in [AUTHORS](AUTHORS).
