Skip to content
View in the app

A better way to browse. Learn more.

ernestdefoe.online

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
ernestdefoe.online

Extensions, themes & support for Flarum and Invision Community

Vibe coding for the community web. Report a bug, request a feature, or dig into the source — this is where the tools you use get built, in the open.

We do custom Bespoke Invision Community apps. If you have an idea for something you want then use the contact form to get in touch with us.
Launch sale

Integrations & Automation for Flarum 2

Integration and automation extensions for Flarum 2 — outgoing webhooks with a scoped REST API and rules engine, GitHub release posting, Facebook auto-posting, Battle.net armory data, and an importer for phpBB, XenForo, vBulletin and more.

5 files

  1. World of Warcraft armory for Flarum 2 — Battle.net login + character data (gear, stats, talents, raids, PvP, professions)
    Install
    From your Flarum root:
    composer require ernestdefoe/armoryThen enable it in Administration → Extensions.
    Source
    GitHub repository
    Packagist
    Free and open source under the MIT licence. Requires Flarum 2.
    • Free
    • 0 Downloads
  2. Listens for GitHub release webhooks and posts a reply to a configured discussion thread.
    Install
    From your Flarum root:
    composer require ernestdefoe/github-release-botThen enable it in Administration → Extensions.
    Source
    GitHub repository
    Packagist
    Free and open source under the MIT licence. Requires Flarum 2.
    • Free
    • 0 Downloads
  3. Post new forum posts to Facebook page
    Install
    From your Flarum root:
    composer require ernestdefoe/flarum-facebook-postThen enable it in Administration → Extensions.
    Source
    GitHub repository
    Packagist
    Free and open source under the MIT licence. Requires Flarum 2.
    • Free
    • 0 Downloads
  4. Connect for Flarum 2

    What it does
    Connect covers both directions of automation:
    Out of your forum → anywhere. When a discussion is started, a reply is posted, or a user registers, Connect fires a signed webhook to whatever URL you (or a Zap) subscribed. Perfect for Zapier/Make/IFTTT/n8n triggers.
    Anywhere → into your forum. A scoped API key lets an external service create discussions and replies as a real user, through Flarum's own API — so every permission and validation rule still applies.
    Inside your forum. The built-in Rules engine runs trigger → conditions → actions entirely on your server. No third-party account, no per-task billing, no data leaving the box.

    Set it all up without leaving your forum
    Connect embeds Zapier's official experience right in your admin panel. Browse 6,000+ apps, pick a recipe — Share new discussions to a Facebook Page, Post to Slack, Add members to Mailchimp — and build or manage Zaps in place. No tab switching, no developer knowledge required.

    Connecting takes one API key — there's nothing to register with Zapier and no developer account needed. Connect ships its own Zapier integration that every forum shares; because it authenticates per-site (your forum URL + your key), one integration serves everyone. Admin → Connect has an Open Connect on Zapier button that takes you straight there.
    The in-page Zap builder shown above switches itself on once that integration is listed publicly in Zapier's directory — until then you build Zaps in Zapier itself, with everything else working exactly the same.
    Prefer Make, n8n, or IFTTT? They all work off the same REST API and webhooks — no Zapier account involved.
    Automation rules (no external service needed)
    Pick a trigger, add optional conditions, and choose one or more actions. Rules run on a queue, off the request path, so they never slow down the person who triggered them.

    Triggers
    Event
    Fires when
    discussion.created
    someone starts a new discussion
    post.created
    someone posts a reply
    user.registered
    a new member signs up
    Conditions — match all or any of a list. Each condition compares a payload field (e.g. title, content, tagList) using one of: is, is not, contains, does not contain, starts with, is greater than, is less than, is empty, is not empty, matches (regex).
    Actions
    Action
    What it does
    Post a reply
    replies to the discussion the event is about
    Add / remove a tag
    requires flarum/tags
    Add / remove from a group
    changes the involved user's groups
    Call a webhook
    POSTs the event payload to a URL you choose
    Connecting Zapier / Make / IFTTT / n8n
    In Admin → Connect, create an API key. Give it a label (e.g. Zapier) and the scopes it needs — Read for triggers, Write for actions.
    Copy the token (ck_…) and secret (cs_…).
    In your automation tool, add a webhook that authenticates with Authorization: Bearer ck_….
    To receive forum events, subscribe your tool's catch-hook URL (Zapier does this automatically via REST Hooks — see the API below).
    To act on the forum, POST to the action endpoints.
    Every outgoing delivery is HMAC-signed so you can verify it really came from your forum:
    X-Connect-Signature: sha256=<hex> valid ⇔ signature == 'sha256=' + hmac_sha256(rawRequestBody, keySecret) REST API
    All routes are under your forum's API root (/api). Authenticate with Authorization: Bearer ck_….
    Method
    Endpoint
    Purpose
    GET
    /connect/me
    Who this key acts as (auth test)
    POST
    /connect/hooks
    Subscribe: { event, targetUrl } → REST Hook, returns { id }
    DELETE
    /connect/hooks/{id}
    Unsubscribe
    GET
    /connect/samples/{event}
    Recent real items shaped like the payload (Zap setup)
    POST
    /connect/actions/discussions
    Create a discussion { title, content }
    POST
    /connect/actions/posts
    Reply to a discussion { discussionId, content }
    A 410 Gone from a subscribed target auto-prunes the subscription — so a Zap you turn off cleans itself up.
    Example
    # What does this key act as? curl https://your-forum.example/api/connect/me \ -H "Authorization: Bearer ck_live_xxx" # Create a discussion as the key's user curl -X POST https://your-forum.example/api/connect/actions/discussions \ -H "Authorization: Bearer ck_live_xxx" \ -H "Content-Type: application/json" \ -d '{"title":"Posted from Zapier","content":"Hello from an automation!"}'Installation
    composer require ernestdefoe/connectThen enable Connect in Admin → Extensions. Make sure a queue worker is running (php flarum queue:work) so webhooks and rule actions are delivered.
    The tag actions light up automatically if flarum/tags is installed; everything else works on a stock forum.
    Minting a key from the CLI
    php flarum connect:key "My key" --scopes=read,writeRequirements
    Flarum ^2.0
    PHP ^8.3
    A running queue worker (recommended — webhooks and rule actions are queued)
    License
    MIT © Ernest Defoe
    • Free
    • 0 Downloads
  5. Importer / Converter for Flarum 2
    Migrate an existing forum into Flarum 2 — from phpBB, vBulletin (3/4/5), XenForo, MyBB, SMF, Vanilla, NodeBB, Invision, Discourse, or Convoro. Everything is driven from the admin panel: pick a platform, connect to its database (or upload a dump), test it, then run the import in small batches with a live progress bar — so even a large forum won't time out.
    Runs on shared hosting
    No queue worker and no SSH required. The import runs as a loop of small "step" requests straight from your browser, each processing one bounded batch and returning — so it can never hit a web timeout. Progress and the source→Flarum id-maps are persisted in the database, so if the tab is closed or the connection drops, reopen the page and it resumes exactly where it left off. If you do have a queue worker (e.g. fof/redis), the import is handed to it and runs fully in the background instead — either way it's safe.
    The admin area
    The whole tool lives on the extension's settings page.
    1. The wizard
    Pick a source platform, then either connect to a database (host, port, database name, username, password, and table prefix) or upload a database file (a mysqldump .sql/.sql.gz, or a SQLite file) for hosts that only hand you a dump. Nothing is written until you start.

    2. Test the connection
    Test connection validates the credentials, confirms it really is the platform you picked, then reports exactly what it found — here 21 Users, 4 Categories, 30 Topics, 371 Posts — so you know it will pull the right data before committing. Start import only lights up once the test passes.

    3. Watch it run
    Start import kicks off the batched run and shows a live progress bar with the current phase and running totals — categories, members, topics and posts — updating as it goes.

    When it finishes you get a summary of everything imported, and can start another.

    Supported sources
    Platform
    Notes
    phpBB 3.x
    BBCode posts; bcrypt passwords copied across
    vBulletin 3 / 4 · vBulletin 5 / 6
    one option covers both — vB5's node schema is auto-detected
    XenForo 1.x / 2.x
    BBCode posts; XF2 bcrypt passwords copied
    MyBB 1.8 · SMF 2.0 / 2.1
    BBCode posts
    Vanilla · NodeBB
    Markdown / mixed formats; NodeBB reads its Redis store (needs the redis PHP extension)
    Invision Community (IP.Board)
    HTML posts, quotes & mentions cleaned up
    Discourse
    PostgreSQL source (needs pdo_pgsql)
    Convoro
    Convoro → Flarum; bcrypt passwords copied, so members keep their logins
    Categories are imported as tags (requires flarum/tags); if tags aren't installed, discussions and posts still import, just untagged.
    How it works
    Timeout-proof — the run is a resumable state machine; each request processes one small batch and returns, so memory stays flat and nothing runs long enough to time out. Works with or without a queue worker.
    Resumable — progress, cursors and the source→Flarum id-maps live in the database, so a run survives a closed tab, a reload, or a dropped connection.
    Faithful content — post bodies go source → HTML/Markdown → Flarum's formatter, landing in Flarum's native stored format so they render as proper rich text.
    Relations preserved — members, tags, discussions, first/last-post pointers, comment counts and participant counts are all rebuilt.
    Requirements & tips
    Import into a fresh Flarum for the cleanest result.
    A queue worker is optional — the import runs from the browser without one. If you have fof/redis + a worker, it runs in the background instead.
    There's also a CLI for very large migrations or scripting:
    php flarum importer:run --source=phpbb \ --host=127.0.0.1 --database=my_old_forum --username=root --password=secret --prefix=phpbb_ # add --test to only check the connection and show counts
    • Free
    • 0 Downloads

Files

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.