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

Everything posted by Ernest Defoe

  1. AI Helper turns Claude — or any model you prefer — into a member of your support team. Mention it, or point it at your support tags, and it replies in seconds using your own forum's posts as context. That means answers about your product, your rules, and your history — not generic AI filler.## ✨ What it does - 🤖 Answers automatically — replies to @mentions and to new posts in the tags you choose. - 🧠 Grounded in your forum (RAG) — it searches your existing posts and answers from them, so replies stay accurate and on-topic. - 🔌 Bring any model — native Anthropic (Claude), or any OpenAI-compatible provider (OpenAI, OpenRouter, Groq, Azure, even local models). - 💸 Exact cost tracking — an admin dashboard shows spend vs. budget with a daily graph. Numbers come straight from the API, not estimates. - 🛑 Hard budget cap — set a monthly limit and the bot pauses itself when it's reached. No surprise bills. - ✍️ Auto or Draft mode — post answers directly, or hold them for a moderator to approve and edit first. - 📝 One-click summaries — any member can get a clean TL;DR of a long thread. ## 🧠 "Grounded in your forum" — what that means On its own, an AI model has no idea what's inside your community. AI Helper fixes that with retrieval: before answering, it finds your most relevant past posts and feeds them to the model. Two modes: - Keyword (FULLTEXT) — works out of the box, no extra key. - Semantic (embeddings) — optional upgrade that matches by meaning (so "can't log in" finds "password won't work"). Costs pennies. ## 🚀 Getting started 1. Install, then open Admin → AI Helper. 2. Add your API key, pick a model, and set a monthly budget. 3. Choose Auto or Draft, select your support tags, and switch it on. Bring your own API key — it stays on your server, and the bot only ever sees content the asker can already view. This is a 💸 Premium Extension that must be purchased on Floxum. Cost is a one time charge of $5.00 since you also have to pay for your API tokens as well.
  2. @Claude_Bot so you will need an API key from Anthropic or any other AI provider (ChatGPT, etc) to use this?
  3. I have setup and AI Assistant here to help with support questions, take notes on bug reports so they can be fixed as well. All you have to do is mention @Claude_Bot and it will reply to your message. It's not instant but you will receive a reply to your question. It polls the forum every few minutes looking for new posts and auto reads topics in #bug-reports.
  4. @Claude_Bot the AI Helper might be a good one. Expand on this some more.
  5. @Claude_Bot what are some ideas you may have for extensions?
  6. calendar 2.0.4 What's Changed fix(security): don't serve unpublished events from the single-event iCal endpoint fix: address remaining Floxum code-review findings Full Changelog: https://github.com/ernestdefoe/calendar/compare/2.0.3...2.0.4 View release on GitHub
  7. @KBExit while still lacking in themes I have released 3 free themes for the general public (Respawn, Aurora, Mosaic), 1 premium theme (Bespoke), and one that is publicly available that was made for my football site (Gridiron Nation). So I'm filling the gap some what.
  8. bespoke 2.0.22 What's Changed fix: wrap editor footer so the action button can't bleed past the dock Full Changelog: https://github.com/ernestdefoe/bespoke/compare/2.0.21...2.0.22 View release on GitHub
  9. theme-toggle 3.0.10 What's Changed fix: keep the mobile theme menu on-screen inside the slide-out drawer Full Changelog: https://github.com/ernestdefoe/theme-toggle/compare/3.0.9...3.0.10 View release on GitHub
  10. bespoke 2.0.21 What's Changed fix: scope custom hero image and height to the welcome hero Full Changelog: https://github.com/ernestdefoe/bespoke/compare/2.0.20...2.0.21 View release on GitHub
  11. Yes I used Claude to create the post above.
  12. bespoke 2.0.20 What's Changed Hide the theme-builder launcher on Page Builder pages Full Changelog: https://github.com/ernestdefoe/bespoke/compare/2.0.19...2.0.20 View release on GitHub
  13. calendar 2.0.3 What's Changed Page Builder: contribute calendar blocks to the editor palette Full Changelog: https://github.com/ernestdefoe/calendar/compare/2.0.2...2.0.3 View release on GitHub
  14. bespoke 2.0.19 What's Changed Back arrow on a post always returns to the discussion list (/all), all layouts Full Changelog: https://github.com/ernestdefoe/bespoke/compare/2.0.18...2.0.19 View release on GitHub
  15. bespoke 2.0.18 What's Changed Category view: fix back-nav (SPA links) + fof/categories-style rows with post counts Full Changelog: https://github.com/ernestdefoe/bespoke/compare/2.0.17...2.0.18 View release on GitHub
  16. bespoke 2.0.17 What's Changed Audit: Eloquent UserTheme model, widget-data stampede lock, image-URL scheme guard Full Changelog: https://github.com/ernestdefoe/bespoke/compare/2.0.16...2.0.17 View release on GitHub
  17. bespoke 2.0.16 What's Changed Show the post action bar (reply, like/react) always, not only on hover Full Changelog: https://github.com/ernestdefoe/bespoke/compare/2.0.15...2.0.16 View release on GitHub
  18. bespoke 2.0.15 What's Changed Widget settings: fix number fields not sticking (e.g. events "How many" → 5) Full Changelog: https://github.com/ernestdefoe/bespoke/compare/2.0.14...2.0.15 View release on GitHub
  19. bespoke 2.0.14 What's Changed Reading aids: fix progress bar hidden behind header + show on any scrollable page Full Changelog: https://github.com/ernestdefoe/bespoke/compare/2.0.13...2.0.14 View release on GitHub
  20. calendar 2.0.2 What's Changed Fix create-event (no form wrapper), redesign event modal, use default loader Full Changelog: https://github.com/ernestdefoe/calendar/compare/2.0.1...2.0.2 View release on GitHub
  21. bespoke 2.0.13 What's Changed UX: long-form reading aids + reply/quote discoverability Per-user "My Theme" — members can personalise their own view (visual + layout) Scope reply/quote CSS to .Post-controls — don't touch .Post-actions (FoF Reactions) Reading aids: lower back-to-top threshold to 300px for discoverability Full Changelog: https://github.com/ernestdefoe/bespoke/compare/2.0.12...2.0.13 View release on GitHub
  22. calendar 2.0.1 What's Changed Phase A: engagement engine — activity heatmap, streaks & forum pulse Phase B: live countdowns — [countdown=…] in posts + event countdowns Phase C + D: On This Day memories + member celebrations (birthdays/anniversaries) docs: README — document the engagement engine (heatmap, pulse, countdowns, memories, celebrations) Fix calendar admin: missing widget-toggle labels + CategoryManager spinner loop Fix CategoryManager render crash: key the 'add' row (mixed keyed/unkeyed fragment) Full Changelog: https://github.com/ernestdefoe/calendar/compare/2.0.0...2.0.1 View release on GitHub
  23. Calendar & Events for Flarum A full-featured, free calendar & events extension for Flarum 2. Month and list views, RSVPs, colour-coded categories, recurring events, cover images, a proper iCal feed, one-click Google Calendar export, and a drop-anywhere Upcoming Events widget that looks right on the default theme — and integrates natively with Bespoke and Page Builder. Built to feel premium. Priced at free. Features🗓️ Month, Week, Day & list views with quick prev / today / next navigation. Week/Day are true time grids with hour lines, a live "now" indicator, side-by-side overlapping events, and double-click-to-create at the clicked time slot. 📍 Location on every event, rendered as a one-tap Google Maps link. 🔁 Recurring events (daily / weekly / monthly / yearly) via standard RRULE, expanded on the fly so each occurrence shows on the right day. ✅ RSVP — members mark themselves Going or Interested, with live counts. 🎨 Categories with colours — filter the calendar and give each event a coloured accent. Managed from a dedicated admin panel with a colour picker. 🖼️ Cover image per event — paste a URL, or upload a file directly when FoF Upload is installed (auto-detected; falls back to a URL field otherwise). 📅 iCal export — a subscribable feed.ics for the whole calendar plus a per-event .ics download (RFC 5545, proper escaping & folding). 🟦 Google Calendar — "Add to Google Calendar" deep-links with title, time, description and location pre-filled. 💬 Optional discussion thread per event (hybrid model) so members can comment using Flarum's native discussion UI. 🧩 Upcoming Events widget — works standalone on the default theme, and registers as a first-class widget/block in Bespoke and Page Builder. 🌓 Theme-aware — every colour resolves through Flarum's own CSS variables, so it looks correct in light & dark and on custom themes out of the box. 🔐 Permissions — separate "create events" and "manage all events" controls. Installation php flarum migrate php flarum cache:clear``` Then open **Admin → Calendar** to configure it. ## Updating ```composer update ernestdefoe/calendar php flarum migrate php flarum cache:clear``` ## Configuration **Admin → Calendar** gives you: | Setting | What it does | | --- | --- | | **Default view** | Month grid or upcoming list when the calendar opens. | | **Week starts on** | Sunday or Monday. | | **Index widget** | Show an "Upcoming events" widget on the forum index. | | **Widget count** | How many upcoming events the widget lists. | | **Link discussion** | Auto-create a discussion thread for each new event (for comments). | | **Categories** | Add / rename / recolour / delete colour-coded categories. | Two permissions are added under **Admin → Permissions**: * **Create calendar events** — who can add events. * **Manage all calendar events** — who can edit/delete events they don't own. ## The Upcoming Events widget The widget is a self-contained component, so it shows up automatically wherever your theme supports it: * **Default theme** — appears in the index sidebar (toggle in admin). * **Bespoke** — available in the widget tray as **Upcoming events**. * **Page Builder** — available as an **Events** block. ## Calendar subscription (iCal) Every calendar exposes a subscribable feed at: ```https://your-forum.example/calendar/feed.ics``` Paste that URL into Google Calendar (*Other calendars → From URL*), Apple Calendar (*File → New Calendar Subscription*), or Outlook to keep events in sync. Each event also has its own `.ics` download and an "Add to Google Calendar" link. ## How events are modelled Events are their own records (title, time, location, recurrence, etc.). When **Link discussion** is enabled, creating an event also spins up a normal Flarum discussion linked to it, so comments, mentions, likes and notifications all work exactly as members expect — no parallel comment system to learn. ## Compatibility * Flarum `^2.0` * PHP `^8.3` * No required third-party extensions. Plays nicely with Bespoke & Page Builder when present, and degrades gracefully when they aren't. * **Optional:** [FoF Upload](https://github.com/FriendsOfFlarum/upload) — enables drag-free file uploads for event cover images. ## Contributing Issues and PRs welcome. To build the front-end locally: ```cd js npm install npm run dev # watch npm run build # production``` ## License [MIT](https://github.com/ernestdefoe/calendar/blob/main/LICENSE) © ernestdefoe
  24. @Subarist based on your feedback I am currently working on an update to address some of the UI/UX suggestions you made and also adding a big update to the theme. With the update I am working on each member can change colors, fonts, font size, hero customization, add/remove widgets and change positions. Basically anything the Admin can do users will be able to do as well and it saves just for them.
  25. 💬 How we build: yes, we vibe code everything — here's why (and how we keep it safe) We believe in being straight with the people who use our themes and extensions, so here it is: every theme and extension we ship is built with vibe coding. All of it. If that word makes you nervous, or makes you roll your eyes, this post is for you. We want to make the honest case for why it's a great way to build — and be just as honest about the ways it goes wrong when people don't respect it. What "vibe coding" actually means Vibe coding is building software by describing what you want in plain language and letting an AI assistant write the code, then steering it conversationally — "make the buttons bigger," "now add a dark-mode toggle," "that broke the sidebar, fix it" — instead of hand-typing every line yourself. You're still the one in charge. You're still making every decision about what gets built, how it behaves, and whether it's good enough to ship. You're just spending your time on the what and the why instead of the boilerplate. ⚡ Why it's good — for those still on the fence It's fast where speed actually matters. Ideas that used to sit in a backlog for months can be prototyped in an afternoon. That means more features, more often, and bugs fixed while they're still fresh. Iteration becomes cheap. When changing something costs minutes instead of hours, you experiment more. You try the bold version of an idea instead of the safe one, because if it doesn't work you just try again. It frees you to focus on the experience. The hours not spent wrestling with boilerplate go into the things you actually feel as a user: the layout, the polish, the little touches that make an extension a pleasure to use. It lowers the wall. A great idea for a theme or feature no longer dies just because someone didn't have ten years of framework experience. More good ideas get to exist. It keeps the big picture in view. Describing a feature in plain language forces you to be clear about what it should do — which, honestly, is where most software goes right or wrong long before the first line of code. If you've been on the fence, the short version is: it lets a small operation move like a big one, and ship things that are genuinely good. ⚠️ The harms — for those who don't use it properly This is the part people skip, and it's exactly why vibe coding gets a bad reputation. Used carelessly, it can ship real damage: Shipping code you don't understand. The single biggest trap. If you can't explain what a piece of code does, you can't tell when it's quietly broken — and you definitely can't fix it under pressure when something goes wrong on someone's live forum. Security holes you never see. AI will happily write something that works but leaves a door open — missing permission checks, unsanitized input, leaky endpoints. For an extension that runs on other people's communities, that's not a small mistake. Invisible technical debt. Code that looks fine and runs fine can still be a tangled mess underneath. Skip the review and you build a tower that gets harder to change with every "just add one more thing." Confidently wrong answers. AI sometimes invents functions, settings, or APIs that don't actually exist, and states it with total confidence. Without testing, those land straight in a release. "It worked on my screen." Generated code often handles the happy path beautifully and falls apart on the edge cases — the empty list, the weird timezone, the user with 4,000 notifications. Skipping testing means your users find those edges for you. The pattern in every one of these is the same: the harm doesn't come from using AI to write code. It comes from abdicating judgment — treating the output as finished instead of as a first draft. ✅ How we do it responsibly We vibe code everything, and we still sleep fine, because we treat the AI as a very fast junior developer — not an oracle: We read and understand every line that ships. If we can't explain it, it doesn't go out. We test against the messy real world, not just the happy path — odd inputs, big forums, light and dark themes, missing optional dependencies. We sweat security on anything that touches permissions, user input, or data. We own the result. When something breaks, "the AI wrote it" is not an excuse — it's our name on the extension, and our responsibility to fix it. That's the whole philosophy: vibe coding gives us speed; judgment keeps it safe. Drop either half and you get something worse than not using it at all. We're proud of how we build, and we think the results speak for themselves across our themes and extensions. If you've got questions about any of this — or you're curious how a specific feature came together — ask away. We're happy to talk about it. </ernestdefoe·online>

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.