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.

Ernest Defoe

Administrators
  • Joined

  • Last visited

Files posted by Ernest Defoe

  1. Play a character, post in-character, and run a card-based tactical game inside your Flarum discussions. Free/MIT.
    Install
    From your Flarum root:
    composer require ernestdefoe/roleplayThen enable it in Administration → Extensions.
    Source
    GitHub repository
    Packagist
    Free and open source under the MIT licence. Requires Flarum 2.
    • Free
    • 0 Downloads
  2. User Projects for Flarum 2 — flexible showcase for creator communities (free/MIT)
    Install
    From your Flarum root:
    composer require ernestdefoe/projectsThen enable it in Administration → Extensions.
    Source
    GitHub repository
    Packagist
    Free and open source under the MIT licence. Requires Flarum 2.
    • Free
    • 0 Downloads
  3. College Football pick'em for Flarum 2.x
    Install
    From your Flarum root:
    composer require ernestdefoe/picksThen enable it in Administration → Extensions.
    Source
    GitHub repository
    Packagist
    Free and open source under the MIT licence. Requires Flarum 2.
    • Free
    • 0 Downloads
  4. Live streaming for Flarum 2 — go live via YouTube or Twitch with a LIVE badge that follows your avatar everywhere.
    Install
    From your Flarum root:
    composer require ernestdefoe/onairThen enable it in Administration → Extensions.
    Source
    GitHub repository
    Packagist
    Free and open source under the MIT licence. Requires Flarum 2.
    • Free
    • 0 Downloads
  5. A Flarum 2 extension to pull og:image information from posts.
    Install
    From your Flarum root:
    composer require ernestdefoe/og-imageThen enable it in Administration → Extensions.
    Source
    GitHub repository
    Packagist
    Free and open source under the MIT licence. Requires Flarum 2.
    • Free
    • 0 Downloads
  6. Page Builder for Flarum 2

    Table of contents
    Features
    The section builder
    Section reference
    Pricing
    Requirements
    Installation
    Quick start
    Pages & the block designer
    The live front‑end editor
    Block reference
    Hero banners
    Content types (the CMS)
    Comments on records
    Promote a discussion to an article
    SEO
    Setting a custom homepage
    Permissions
    For developers: the block & field APIs
    License
    Features
    Section builder — assemble a page from 12 pre‑designed sections that drop in already styled to your forum. Pick, reorder, click any text to edit it in place, and nudge a few friendly knobs (background, accent colour, alignment, spacing). You can't make it ugly, and you don't need to know how the look is achieved.
    Live forum sections — Latest discussions, Newest members, and Articles pull real data straight from your forum and keep themselves current. Nothing to maintain.
    Follows your theme automatically — sections and the editor read Flarum's own colour variables, so everything tracks light / light‑hc / dark / dark‑hc and uses your forum's primary colour. Zero styling work.
    Articles, written or promoted — write an article from scratch, or promote any forum discussion into one, and list them anywhere with the Articles section.
    Visual page designer — build pages from a responsive 12‑column grid of rows → columns → blocks, with drag‑and‑drop reordering, in the admin.
    Live WYSIWYG editor on the front end — admins get an Edit layout button on any Page Builder page; drag blocks around and edit their settings while seeing the real, rendered result.
    15 built‑in blocks — heroes, text/HTML/images/buttons, forum widgets (recent & featured discussions, online users, newest members, stats, tag grid), content lists, and media embeds.
    Customizable hero banners — full‑width or split layouts; gradient, solid, or uploaded/linked image backgrounds; custom text color; one or two buttons.
    Content types (CMS) — define your own kinds of content (articles, downloads, a directory, a knowledge base) with custom fields, categories, and per‑group permissions. Records get listing pages, detail pages, and comments.
    Promote a discussion to an article in one click.
    Built‑in SEO — server‑rendered titles, meta descriptions, and Open Graph / Twitter cards for every page and record.
    Open block & field APIs — other extensions can register their own blocks and field types.
    The section builder
    The fastest way to build a page. Go to Pages → New page and you land in a full‑screen editor: your sections on the left, a live preview in the middle, and the settings for whatever you've selected on the right.

    Add a section and pick from the gallery. Every section arrives already wearing your forum's colours, fonts and corner rounding — there is no separate theme to configure.

    Edit by clicking. Headlines, body copy, buttons, feature cards, pricing plans, FAQ rows — click the text on the page itself and type. Items can be added and removed from the right‑hand panel.
    Tweak with guardrails. Each section exposes a small, safe set of controls: background (Surface, Subtle, Brand tint, Dark, Image), accent colour, alignment, and spacing. Deselect everything and the panel becomes the page's theme.

    Publish when you're ready with the Draft / Published switch, then hit View page to see it live at /p/your-slug. The public page is rendered by the exact same code as the preview, so what you design is what visitors get.

    Section reference
    Section
    What it does
    Hero
    Headline, sub‑copy and up to two buttons. Optional full‑bleed background photo with an automatic scrim so text stays readable.
    Feature grid
    Three cards with an icon, title and description. Icons are any Font Awesome class.
    Articles
    Live. Lists your latest articles — both ones you wrote and discussions you promoted — with cover image, excerpt, author and date.
    Image + text
    A split section with an uploaded image on either side.
    Stats band
    Big numbers with labels.
    Latest discussions
    Live. Recent threads from your forum with reply counts, updating on their own.
    Newest members
    Live. Recent sign‑ups with avatars.
    Testimonial
    A pull quote with an attributed author.
    Pricing
    Three plan cards; mark one as the popular plan.
    Call to action
    A closing banner with a button.
    Logo strip
    A muted "trusted by" row.
    FAQ
    A list of questions and answers.
    Sections marked Live read from your forum and refresh themselves — you place them once and never edit them again.
    Writing articles
    Articles are content‑type records, so they get their own page, comments and SEO. There are two ways to create one, and both end up in the Articles section:
    Write one — the ✦ Articles button in the editor (or the Write an article button on the Articles section itself) opens a blank article.
    Promote a discussion — pick any thread from the same dialog and it becomes an article that links back to the original discussion.

    Pricing
    Page Builder is a premium extension, distributed through Floxum. Access requires an active subscription.
    Plan
    Price
    Covers
    For all use
    $10.00 / year
    Not‑for‑profit and for‑profit sites
    Requirements
    Flarum ^2.0
    PHP 8.3+ (matches Flarum 2's minimum)
    Optional: flarum/tags — required only for the Tag Grid block.
    Optional: fof/upload — required for image uploads in the page builder and content editors. Without it you can still paste image URLs; the upload button shows a notice telling you to install it.
    Installation
    composer require ernestdefoe/page-builder php flarum migrate php flarum cache:clearThen enable Page Builder under Admin → Extensions.
    Quick start
    Open Admin → Extensions → Page Builder.
    Click New page, give it a title, and you're dropped into the designer.
    Add row → Add block, pick a Hero banner, and edit its heading, background, and buttons.
    Click Save changes, then Preview.
    (Optional) Use the Forum homepage card to make your page the site's front page — see Setting a custom homepage.

    Pages & the block designer
    A page lives at /p/{slug} (or / when set as the homepage) and is built from a layout tree:
    Page └── Row (full‑width / wide / narrow, padding, background) └── Column (1–12 of a 12‑column grid) └── Block (hero, text, widget, …) In the designer you can:
    Add / delete / reorder rows, set each row's width and padding, and give it a background color.
    Add / delete / reorder columns within a row and set each column's width (out of 12).
    Add / delete / reorder blocks within and across columns.
    Edit every block's settings inline (the form is generated from the block's schema).
    Set per‑block visibility — which device sizes (desktop / mobile) and which user groups can see it.
    Everything reorders by dragging the grip handle (☰); drop zones appear between items as you drag.

    The live front‑end editor
    Open any Page Builder page as an admin and click Edit layout (bottom‑right). The page turns into a live editor where the real blocks render as you work:
    Drag rows, columns, and blocks to rearrange them.
    Click the ⚙ settings icon on a block to edit it — changes update the live preview instantly (true WYSIWYG).
    Add block / delete blocks per column.
    Click Save layout to publish, or Cancel to discard.

    Block reference
    Block
    Category
    What it does
    Hero banner
    content
    Full‑width or split banner; gradient/solid/image background, heading, subheading, up to two buttons. See Hero banners.
    Heading
    content
    A styled heading (h1–h4), alignment.
    Text
    content
    A rich text paragraph block, alignment.
    HTML
    content
    Raw HTML, sanitized on save (scripts & event handlers stripped). Authoring is admin‑only. Great for embeds and custom markup.
    Image
    media
    A single image (uploaded or by URL), optional rounded corners, alignment.
    Button
    content
    A call‑to‑action button (primary/secondary), link, alignment.
    Divider
    layout
    A horizontal rule with adjustable spacing.
    Recent Discussions
    forum
    The latest discussions, visibility‑filtered.
    Featured Discussions
    forum
    Hand‑picked discussions by ID, in your chosen order, with optional excerpts.
    Online Users
    forum
    Avatars of who's online now.
    Newest Members
    forum
    The most recently joined members, with join dates.
    Forum Stats
    forum
    Member / discussion / post / online counts.
    Content list
    content
    Embeds records from a content type (e.g. latest articles) as cards.
    Tag Grid
    forum
    Forum tags as clickable cards (requires flarum/tags).
    Embed
    media
    A responsive YouTube/Vimeo embed from a URL, with caption.
    Hero banners
    The Hero banner block (and each content type's optional listing hero) is fully customizable:
    Layout — Full‑width background (centered or left text) or Split (text panel beside an image panel).
    Background — Gradient (start/end colors + angle), Solid color, or Image (upload or paste a URL, with an adjustable dark overlay).
    Text — heading, subheading, and text color: light, dark, or a custom color to match your theme.
    Buttons — a primary and an optional secondary button (e.g. "Browse articles" + "Browse forum").
    Height & alignment.
    Content types (the CMS)
    Page Builder includes a full content‑management layer. A content type is your own kind of content — Articles, Downloads, a Knowledge base, a Directory — each with its own fields, categories, permissions, and URLs.

    Create one under Page Builder → Content types → New content type, then configure:
    Fields — text, textarea, rich text, markdown (the full Flarum composer with uploads/mentions/emoji), image (upload or URL), number, date, boolean, select, multiselect, URL, email, color, rating, and relationship. Mark one as the title, and choose which appear in the list view.
    Categories — optional taxonomy with a filter bar and badges on the listing.
    Permissions — which groups can view, submit, and manage records.
    Listing hero — an optional hero banner on the type's /c/{type} page.
    Each type gives you:
    A listing at /c/{type} (cards, category filter, pagination).
    A record page at /c/{type}/{slug}.
    A composer at /c/{type}/new and /c/{type}/{slug}/edit.

    Comments on records
    When enabled for a type, each published record gets a comment thread backed by a real Flarum discussion — so comments get mentions, reactions, notifications, and moderation for free. The thread is created lazily on first view and hidden from the normal discussion list.
    Promote a discussion to an article
    Turn any forum discussion into an article from its controls dropdown → Promote to article (admin only). The discussion's title becomes the article title, its first post becomes the body, and the first image in the post becomes the cover. The original discussion is then attached to the new article as its comment thread (and drops out of the forum listing) — and anyone who opens the old discussion is redirected to the article (admins aren't, so they can still manage it).
    To reverse it, use Demote to discussion on the same dropdown: the article is deleted and the discussion returns to a normal forum discussion (its replies are kept).
    SEO
    Page Builder renders SEO tags server‑side (so crawlers and social cards see them without running JavaScript) for /home, /p/{slug}, /c/{type}, and /c/{type}/{slug}:
    <title> and <meta name="description">
    Open Graph (og:type, og:title, og:url, og:description, og:image)
    Twitter card tags
    article:published_time for records, plus a canonical URL
    Record descriptions come from a summary/excerpt and og:image from the record's cover image. Pages use the Meta description field you set in the designer. The tags are authoritative and de‑duplicated, so they coexist cleanly with a dedicated SEO extension.
    Setting a custom homepage
    In Page Builder → Forum homepage, choose the page to use as your front page.
    Go to Admin → Basics → Home Page and select “Home (Page Builder)”.
    Your custom page now serves as the forum's landing route (/), Invision‑style.
    Permissions
    Pages & the designer (admin) — building pages and editing HTML blocks is admin‑only.
    Content types — set per‑type view / submit / manage group permissions in the content‑type editor.
    Block visibility — limit individual blocks to specific groups (enforced server‑side) and device sizes.
    For developers: the block & field APIs
    Register a block from any extension:
    // extend.php (new Ernestdefoe\PageBuilder\Extend\PageBuilderBlock(MyBlock::class)),// forum JSapp.pageBuilder.registerBlock('my-block', MyBlockComponent);MyBlock extends Ernestdefoe\PageBuilder\Block\AbstractBlock: declare type()/name()/icon()/category(), a settingsSchema() (the same schema language the editor renders), and a resolve($settings, $actor) returning data scoped to the actor's visibility. The matching JS component receives { settings, data }.
    Register a custom field type for content types via app.pageBuilderFields.register(type, InputComponent, DisplayComponent).
    License
    Proprietary © Ernest Defoe. A premium paid extension — subscribe on Floxum ($10/year). See LICENSE for terms. For licensing inquiries: ernestdefoe@gmail.com
    • Free
    • 0 Downloads
  7. 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
  8. 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

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.