Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
ba97d19
feat: move to hetzner managed
luceos Jul 7, 2025
a8e7e2e
fix: wrong scp action version
luceos Jul 7, 2025
e343f01
fix: use install instead of ci
luceos Jul 7, 2025
ba55f3f
[2.x] feat: database queue (#495)
imorland Nov 24, 2025
1038a82
Fontawesome config (#496)
imorland Nov 24, 2025
e210c60
fix: incorrect example use of admin extender
imorland Jan 7, 2026
857395a
Refactor admin.md to use export default syntax
imorland Jan 7, 2026
01db890
chore: update db queue setup for 2.x (#499)
imorland Feb 22, 2026
5355e42
docs: update Laravel references from 11.x to 12.x (#502)
imorland Feb 25, 2026
8c93f7b
docs: document PHPStan 2.x and Larastan 3.x upgrade changes (#503)
imorland Feb 25, 2026
0e178ab
docs: document wikimedia/less.php 4.x to 5.x upgrade (#504)
imorland Feb 25, 2026
1ecf458
docs: document Conditional extender, ApplicationBooted event, and Lar…
imorland Feb 25, 2026
983a77b
docs: document admin extension categories, health widget, and abandon…
imorland Mar 2, 2026
5fa3749
docs: add FontAwesome 7 upgrade documentation (#501)
imorland Mar 2, 2026
e5c47e6
docs: add notable change for WelcomeHero (#500)
DavideIadeluca Mar 7, 2026
f592d57
docs: add avatar drivers guide for User extender (#498)
datlechin Mar 8, 2026
3b2e7d3
docs: add haptic feedback guide for extension developers (#507)
imorland Mar 12, 2026
ba67768
docs: document WebP avatar conversion and animated GIF support in 2.0…
imorland Mar 12, 2026
4a10d93
docs: update haptic guide for built-in user preference toggle (#509)
imorland Mar 12, 2026
962f6b4
docs: document logout route change from GET to POST (flarum/framework…
imorland Mar 14, 2026
de0a3ed
docs: document OAuth/forum auth changes in 2.0 upgrade guide (#511)
imorland Mar 15, 2026
8c332e8
docs: update Laravel 12 → 13 and PHP 8.2 → 8.3 minimum for Flarum 2.0…
imorland Mar 19, 2026
c7f058d
Update broken links to API docs (#512)
dsevillamartin Mar 19, 2026
319b3a9
docs: document announcements widget and flarum_announcements.disabled…
imorland Mar 20, 2026
d34ddf2
docs: add realtime extender integration guide (#516)
imorland Mar 21, 2026
bcd4318
docs(realtime): fix ext: import paths, clarify model selection, impro…
imorland Mar 21, 2026
e5bf8a4
docs: document changes around custom route resolvers (#514)
DavideIadeluca Mar 21, 2026
853a020
docs: rewrite v1 to v2 upgrade guide (#520)
imorland Mar 23, 2026
ee07172
chore: add note to README about search (#519)
imorland Mar 24, 2026
6320bc0
docs: document reset settings button for extension admin pages (#521)
imorland Apr 3, 2026
740a9fb
docs: document HiDPI avatar srcset variants and DriverInterface chang…
imorland Apr 11, 2026
2fbd795
docs(realtime): document authorizePresenceChannel extender method (#525)
imorland Apr 15, 2026
5912f67
docs: update testing guide for PHPUnit 12 and flag 2.x migration step…
imorland Apr 18, 2026
1b50134
docs: reframe 2.0 status from beta to release candidate (#528)
imorland Jun 9, 2026
66e980f
fix(ci): pin webpack to unbreak Docusaurus production build (#529)
imorland Jun 9, 2026
14cca59
docs: correct 2.x extend reference inaccuracies, add DB version guida…
imorland Jun 9, 2026
2ebfc90
docs: rewrite mail and middleware extend pages for 2.x (#531)
imorland Jun 9, 2026
ea2a9d8
Upgrade to Docusaurus 3, standardize on Yarn, improve SEO, invalidate…
imorland Jun 9, 2026
6e4e49a
[ImgBot] Optimize images
ImgBotApp Jun 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
20 changes: 15 additions & 5 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,32 @@
name: Deploy to production

on:
workflow_dispatch:
push:
branches:
- master
- main

jobs:
deploy:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@master
- uses: actions/checkout@v4

- name: executing remote upgrade
uses: appleboy/ssh-action@v1.0.3
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '24.x'
cache: 'yarn'
- run: yarn install --frozen-lockfile
- run: yarn build

- name: copy compiled assets to remote
uses: appleboy/scp-action@v1
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USERNAME }}
key: ${{ secrets.DEPLOY_SSH_KEY }}
port: ${{ secrets.DEPLOY_PORT }}
script: cd /var/www/docs.flarum.org && ./deploy.sh
source: build
target: public_html/docs.flarum.org
42 changes: 39 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,50 @@

This repository contains the source code for [Flarum's docs site](https://docs.flarum.org).

In order to avoid conflicts and corruption during translation synchronization, we only currently accept content contributions in English, and translations are only accepted through [crowdin](https://crowdin.com/project/flarum-docs). We really appreciate all contributions, and these measures help ensure that documentation is up to date and avoids breaking unexpectedly. See [our docs](https://docs.flarum.org/contributing-docs-translations) for more information.
In order to avoid conflicts and corruption during translation synchronization, we only currently accept content contributions in English, and translations are only accepted through [Crowdin](https://crowdin.com/project/flarum-docs). We really appreciate all contributions, and these measures help ensure that documentation is up to date and avoids breaking unexpectedly. See [our docs](https://docs.flarum.org/contributing-docs-translations) for more information.

## Translations

Translations are managed with [Crowdin](https://crowdin.com/project/flarum-docs), **not** by editing files in this repository directly.

**English is the only source.** The `docs/` and `versioned_docs/` directories are the source of truth; every file under `i18n/<locale>/` is a translation managed by Crowdin and **should not be edited by hand** — manual edits there will be overwritten on the next sync.

### How to contribute a translation

1. Go to the [Flarum Docs Crowdin project](https://crowdin.com/project/flarum-docs) and sign in (a free Crowdin account is required).
2. Pick your language. If it isn't listed, request it via the project.
3. Translate strings in Crowdin's web editor. Source strings come from the English Markdown; keep Markdown structure, code blocks, and placeholders (e.g. `` `{user}` ``) intact.

### How translations reach the site

Crowdin's GitHub integration periodically pushes approved translations to the `l10n_master2` branch and opens a **"New Crowdin updates"** pull request. A maintainer reviews and merges it, after which the normal [deploy workflow](.github/workflows/deploy.yml) publishes the translated pages. Crowdin does **not** commit to `main` or publish anything on its own — a human merge is always required.

> **Maintainers:** when reviewing a "New Crowdin updates" PR, build it locally first (`yarn build`) — translated content can contain Markdown that fails the MDX compiler (e.g. unescaped `{` or `<`), which would break the production build for **all** languages.

## Search

Search is powered by [Algolia](https://www.algolia.com/) via Docusaurus's built-in Algolia theme. Algolia uses an external web crawler that periodically indexes the **deployed site** at `https://docs.flarum.org` — it does not index local builds.

This means:
- New or updated pages will **not appear in search** until they are deployed to production and the Algolia crawler has re-indexed the site.
- Pages must be listed in `sidebars.js` to be included in the built site and therefore indexed.
- Search results are filtered by doc version (`contextualSearch: true`), so `2.x` pages won't appear when searching from the `1.x` docs and vice versa.

To manually trigger a re-index after a significant content addition, use the Algolia Crawler dashboard (requires Algolia account access for `appId: QHP1YG60G0`, `indexName: flarum`).

## Testing locally

Our documentation is generated with [Docusaurus](https://docusaurus.io/docs).
Our documentation is generated with [Docusaurus](https://docusaurus.io/docs). It requires **Node.js 20 or newer**.

Use Yarn to install the dependencies and start Docusaurus in a local webserver:

```bash
yarn install
yarn run start
yarn start
```

To produce a production build (as the deploy workflow does):

```bash
yarn build
```
8 changes: 6 additions & 2 deletions crowdin.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
files:
- source: /i18n/en/**/*
translation: /i18n/%two_letters_code%/**/%original_file_name%
- source: /docs/**/*
translation: /i18n/%two_letters_code%/docusaurus-plugin-content-docs/current/**/%original_file_name%
# 2.x (current) translations are intentionally not synced. They were frozen at
# a Dec-2024 snapshot, fell ~18 months behind, and translated since-corrected
# content (e.g. the pre-Symfony mail driver API). They were removed ahead of the
# 2.0 release. Re-enable this mapping to resume 2.x translation from current English.
# - source: /docs/**/*
# translation: /i18n/%two_letters_code%/docusaurus-plugin-content-docs/current/**/%original_file_name%
- source: /versioned_docs/version-1.x/**/*
translation: /i18n/%two_letters_code%/docusaurus-plugin-content-docs/version-1.x/**/%original_file_name%
2 changes: 1 addition & 1 deletion docs/admin.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ The Admin Dashboard has the following sections, being:
- **Permissions** - Shows the permissions for each user group, and allows you to configure global and specific scopes.
- **Appearance** - Allows you to customize the forum's colors, branding and add additional CSS for customization.
- **Users** - Provides you with a paginated list of all the users in the forum, and grants you the ability to edit the user or take administrative actions.
- **Advanced** - Allows you to configure advanced settings such as Maintenance Mode, Search drivers, and more.
- **Advanced** - Allows you to configure advanced settings such as Maintenance Mode, Search drivers, Queue driver, and more.

Apart from the above-mentioned sections, the Admin Dashboard also allows you to manage your Extensions (including the flarum core extensions such as Tags) under the _Features_ section. Extensions which modify the forum theme, or allow you to use multiple languages are categorized under the _Themes_ and _Languages_ section respectively.
32 changes: 1 addition & 31 deletions docs/assets/api_flowchart.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/config-repositories.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/extension-manager-page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/gambit_autocomplete_dropdown.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/global_search_modal.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/home_screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/install-extension.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/uninstall-extension.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/update-extension.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
78 changes: 78 additions & 0 deletions docs/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,57 @@ Here's a quick overview of what everything means with an example file:
'api' => 'api', // /api goes to the API
'admin' => 'admin', // /admin goes to the admin
),
'queue' =>
array (
'driver' => 'sync', // Use the standard sync queue. Omitting this will entirely will have the same effect
),
'fontawesome' =>
array (
'source' => 'local', // Use the bundled FontAwesome Free v7 icons. See below for other config options
)
);
```

### Configuration via environment variables

Whilst the file based method described here is suitable for most Flarum installations, scaled Flarum instances or those deployed via CI/CD will probably benefit from being configured via the environment. Here's an example of how to do this:

```php
<?php return array (
'debug' => env('DEBUG')
...
);
```

This provides Flarum with the static configuration file it expects, but pulls variables from the environment at runtime.

### Queues

Flarum ships with support for two queue drivers - `sync` and `database`. Many tasks, or 'jobs' can be offloaded to a separate process in order to improve response times and provide a better user experience.

The only configuration key read from `config.php` is `driver`. Omitting the `queue` block entirely is equivalent to setting `driver` to `sync`.

* `sync` - default behaviour; jobs run immediately inline during the request
* `database` - stores jobs in a dedicated `queue_jobs` database table, which are then processed via the [scheduler](/2.x/scheduler) in a separate process. It is strongly advised that the scheduler is configured to run _every minute_

When the `database` driver is active, additional tuning options (retries, memory limit, timeout, etc.) become available in the admin panel under **Admin > Advanced Settings**.

##### Other queue drivers

Extensions such as [FoF Redis](https://github.com/FriendsOfFlarum/redis) provide additional queue drivers. These do not require any `queue` entry in `config.php` — they are configured through their own extension settings.

### Announcements widget

Flarum displays an announcements widget on the admin dashboard, showing the latest news from the official [Flarum community](https://discuss.flarum.org). This is enabled by default and refreshes weekly in the background.

To disable it, add the following to your `config.php`:

```php
'flarum_announcements.disabled' => true,
```

When disabled, the widget is hidden from the dashboard, no outbound requests are made to discuss.flarum.org, and the scheduled refresh task is not registered.

### Maintenance modes

Flarum has a maintenance mode that can be enabled by setting the `offline` key in the `config.php` file to one of the following values:
Expand All @@ -46,3 +94,33 @@ Flarum has a maintenance mode that can be enabled by setting the `offline` key i
This can also be configured from the admin panel's advanced settings page:

![Toggle advanced page](https://user-images.githubusercontent.com/20267363/277113270-f2e9c91d-2a29-436b-827f-5c4d20e2ed54.png)

### FontAwesome

By default Flarum uses the bundled FontAwesome Free v7 icons. These can be switched out to use either a CDN hosted icon bundle, or a custom kit. See the [FontAwesome](fontawesome.md) page for full details on each source.

```php
<?php

return [
'url' => 'https://example.com',
// ... other config

// FontAwesome Kit (Pro features + custom icons)
'fontawesome' => [
'source' => 'kit',
'kit_url' => 'https://kit.fontawesome.com/YOUR_KIT_CODE.js',
],

// OR use a CDN
// 'fontawesome' => [
// 'source' => 'cdn',
// 'cdn_url' => 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.0/css/all.min.css',
// ],

// OR keep local (default, no config needed)
// 'fontawesome' => [
// 'source' => 'local',
// ],
];
```
Loading