Discourse

discourse.orgcontributed by Samuele Ongaro

YES

Replaceable in one session with an AI coding agent.

Open-source forum software with trust levels, moderation tooling and a reading experience built for long threads, hosted by them or on your own server.

Promptfree, for everyone, and the only version there is
Build me the forum I actually need instead of a hosted Discourse: threads that read well, moderation that scales with trust, and mail that works in both directions.

Read this first: the product you are replacing is open source and self-hosting it is a real answer — the fee buys a hosted instance with upgrades, backups and mail already configured. Build this when your community is small and specific and you want it to feel like your own site rather than like a forum.

STACK
- Node 20+ with Fastify, server-rendered HTML with a little vanilla JS
- SQLite through better-sqlite3, WAL mode, with FTS5 for search
- Caddy in front

THE DATA MODEL
- users: id, username, email, name, avatar_path, bio, trust_level, is_staff, is_suspended, suspended_until, created_at, last_seen_at, post_count, read_time_seconds
- categories: id, slug, name, description, colour, position, read_permission, post_permission, parent_id
- topics: id, category_id, slug, title, author_id, is_pinned, is_closed, is_deleted, post_count, view_count, last_posted_at, created_at
- posts: id, topic_id, post_number, author_id, body_md, body_html, reply_to_post_id, edited_at, edit_count, is_deleted, created_at
- post_revisions: id, post_id, body_md, editor_id, at — append-only; an edited post keeps its history
- reads: user_id, topic_id, last_read_post_number, last_read_at — this one table is what makes a forum readable
- likes, flags, notifications, subscriptions, invites, bans
- email_threads: post_id, message_id, references_json

TRUST LEVELS, WHICH IS THE IDEA WORTH COPYING
- New members are limited: no links, no images, a post rate limit, a cap on how many topics they can reply to in a day
- Limits lift automatically as they read and participate — topics entered, posts read, time spent reading, days visited. The thresholds are configurable and the defaults are stated
- Higher levels gain abilities: editing titles, recategorising, and eventually flagging that acts immediately
- This is why the original scales: moderation is distributed to people the system has watched behave well, rather than concentrated in one exhausted person. Build the counters from day one — they cannot be reconstructed later

READING
- Infinite thread with a position indicator, not pages. Somebody returning to a 400-post topic lands where they left off
- The unread state is per user per topic, stored, and correct — a forum that shows everything as unread is a forum people stop opening
- Quote a selection to reply to it, with the quote linking back to the post
- Replies shown in context: who replied to whom, expandable in place
- A summary mode that shows only the most-liked posts in a long topic
- Keyboard shortcuts for the whole reading loop

POSTING
- Markdown with a live preview, restricted and sanitised on the server, with the rendered HTML stored
- Uploads with type checked from content, stored by hash, images resized and the original kept
- Drafts saved automatically, per topic, and recoverable
- Edit window with revisions kept; a post edited after a while says so
- Duplicate topic detection while typing a title, from the full-text index

MODERATION
- Flags with reasons, queued, and acting automatically at a threshold — hide the post, notify the author, wait for a human
- Suspend, silence, and delete with a reason, all recorded in an append-only log
- Spam defences: a honeypot, rate limits per address hash, a link limit for new accounts, and a review queue for the first post of every new member
- Everything reversible, and every action logged with the actor

EMAIL IN BOTH DIRECTIONS
- Notifications for replies, mentions, and watched topics and categories, each with its own setting
- Digest for people who have not visited, with a frequency they choose, and it stops when it stops being opened
- Reply by email: an inbound address per user per topic with a signed token, parsed properly, quoted history stripped, threading headers set so a mail client keeps the conversation together
- Bounces and automatic replies detected and not posted to the forum
- Every mail has a one-click way to stop that kind of mail

SEARCH
- FTS5 over titles and post bodies, with filters by category, author, date and topic state
- Ranked by relevance and recency together, with the matching lines shown

OPERATIONS
- .env: DATABASE_PATH, STORAGE_PATH, BASE_URL, SMTP_URL, IMAP_URL, SESSION_SECRET, HASH_SALT
- Migrations on boot, each once
- SPF, DKIM and DMARC documented; a forum whose notifications land in spam is a dead forum
- Nightly backup off the machine, restore script
- Health endpoint that checks both mail directions

WHAT MATTERS MOST
The read state and the trust levels. Build the per-user read position and the participation counters before anything looks good — the first is why people come back, and the second is the only thing standing between you and moderating everything yourself forever.

Give me the repository, migrations, .env.example, a seed community, and a README with deploy steps behind Caddy and the mail DNS records.

What you lose

  • Trust levels and moderation tools refined over a decade of real communities
  • A hosted instance with upgrades, backups and mail delivery configured
  • Mail-in and mail-out threading, which is fiddly to get right

If you would rather not build

  • GitHub Discussions, which is free

What it costs

as published on their pricing page

PlanBilled monthlyBilled yearlyLast read
—$20/mo——

Their pricing page is where these came from. Seeing a different price? Tell us.

The escape hatch

open source · no votes, no paid placement

Discourse

$0

The product itself, free to self-host with the official Docker setup.

discourse/discoursefree · open source

Flarum

$0

A lighter forum that runs on ordinary PHP hosting.

flarum/frameworkfree · open source

Why this verdict

our own opinion · changed only by a person

80/100

Verdict yes at 80. The software is free and excellent; mail configuration and moderation settings are what decide whether the forum survives.

History

tracked since 10 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 5/day
views024530 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

Questions about Discourse

answered from the record above

Is Discourse free?

No — the plan we track is $20 a month. Basic from around $20/month billed monthly on the hosted plan; the software is free to self-host.

Can you replace Discourse by building your own?

YES. Replaceable in one session with an AI coding agent. Replacement score 80 out of 100, build time one session. Read what you lose before you decide.

How much does Discourse cost?

$20 a month on Basic — $240 a year. Recorded 10 Aug 2026.

What do you lose by replacing Discourse?

Trust levels and moderation tools refined over a decade of real communities; A hosted instance with upgrades, backups and mail delivery configured; Mail-in and mail-out threading, which is fiddly to get right. If any of those carry weight for you, keep paying.

Is there an open-source alternative to Discourse?

Yes: Discourse, Flarum. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 29 in Customer support

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc