Skip to content

Latest commit

 

History

898 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Meith

The fast, code-first forum engine. Meith is open-source forum software: self-hosted by default, built on modern TypeScript, and fast enough to run with JavaScript disabled. Threaded discussions, search, permissions, moderation, paid memberships, themes, plugins and an operator CLI — from a single config repo to a server of your own, with no per-member pricing.

Try it in a minute

npx create-meith my-board
cd my-board && npm install && npm run dev

That is a board of your own on http://localhost:3000, serving a realistic fixture dataset from memory — no database, no Docker. The quickstart is this route written out; the introduction is the philosophy behind it.

Run a board

Deployment has three routes onto your own infrastructure: guided with Coolify for most boards, Docker Compose by hand if you already operate a proxy, or Vercel if you would rather not have a server.

A production board runs four services:

  • PostgreSQL stores board data.
  • A one-shot migration service updates the schema before startup.
  • The web service handles browser and API requests.
  • The worker runs scheduled and queued work once a minute.

After deployment, open /install to create the board and its first administrator.

Work on Meith

You need Node.js 22 or newer and pnpm 10.

pnpm install
pnpm dev

pnpm dev starts the community app at http://localhost:3000 in fixture mode, so you can browse the interface without PostgreSQL. See Development before changing data or opening a pull request.

The main workspace applications are:

Path Package Purpose
apps/community @meith/web The forum application
apps/worker @meith/worker Background and scheduled work
apps/cli @meith/cli Operator commands
apps/web @meith/site meith.dev and the documentation site

Business capabilities live in packages/. Themes, plugins, examples, deployment files, and documentation have their own top-level directories. Architecture explains the boundaries and request flow.

Documentation

Start with the task you need to complete:

Task Guide
See it running locally Quickstart
Install a board Deployment
Configure a board in code Configuration
Move from MyBB or phpBB Migrating
Administer forums and members Organiser guide
Moderate content Moderator guide
Manage paid memberships Memberships guide
Operate the server Operations
Upgrade or recover a board Upgrading · Disaster recovery
Build a theme or plugin Themes · Plugins
Contribute to Meith Development

The complete index is in docs/README.md. The website renders these Markdown files directly; there is no separate copy.

The table below is generated from apps/web/content/docs.manifest.json by pnpm site:docs.

Section Document What it answers
Getting started getting-started/introduction.md The philosophy: server-first pages that work with JavaScript off, a board pinned in a small repository, and a server of your own. Start here to see whether Meith thinks like you do.
Getting started getting-started/quickstart.md npx create-meith, and a minute later a board is running on your machine in fixture mode — no database, no Docker, no account with anybody.
Getting started getting-started/deployment/index.md The four-service production shape every route deploys, and the chooser: Coolify guided, Compose by hand, or Vercel without a server.
Getting started getting-started/deployment/coolify.md From a rented server to a board on your own domain, with Coolify, in about twenty minutes. Written for whichever volunteer drew the short straw.
Getting started getting-started/deployment/docker-compose.md The advanced route: Docker Compose, a .env you write, and a reverse proxy you run. Most boards should deploy with Coolify instead.
Getting started getting-started/deployment/vercel.md The board on functions: the driver set, the build command that carries the migration, the cron job that replaces the worker, what previews and rollbacks do to your schema — and how to leave again.
Configuration & guides guides/configuration.md What the board repository pins — the engine version, the themes, the plugins — and the deliberate line between it and everything organisers run from the browser.
Configuration & guides guides/migrating.md The full procedure: what to check first, the import command for each source, what does and does not come across, and what to do after it finishes.
Configuration & guides guides/community/organiser-guide.md Running the board from a browser: forums and the organisers' room, the community's name and colours, announcements, members — and handing it all over.
Configuration & guides guides/community/moderation-guide.md For the volunteers who keep it civil: the approval queue, reports, tidying threads, warnings and bans — and where each screen lives.
Configuration & guides guides/community/membership-guide.md Taking memberships through the board: plans, discount codes, gifting, the memberships desk and the ledger — Dues end to end, without a terminal.
Configuration & guides guides/community/formatting.md The composer's toolbar and the syntax behind it: highlighted code, spoilers, mention suggestions, link previews, and placing an attachment inline.
Configuration & guides guides/community/forums.md The board's shape and who may do what inside it: the forum tree, a forum's options, how a permission resolves, the matrix, and what a moderator appointment grants.
Configuration & guides guides/community/groups.md What a group carries: board-wide permissions, the daily allowances, colours and badges, display groups, the groups a plugin may grant, and the rules that promote members automatically.
Configuration & guides guides/community/antispam.md The registration challenge, the limits on pages nobody has signed in to, the three login counters, and the hourly allowances — what each is worth and what it costs a real visitor.
Configuration & guides guides/community/reputation.md Members rating each other: what a rating is worth, the four settings, the two that decide between a one-press thanks and a form, and why the totals cannot drift.
Configuration & guides guides/community/search.md The four controls over the most expensive thing a visitor can ask for: switching search off without losing the index, the shortest word a query may rest on, and the two different limits on how often.
Configuration & guides guides/community/word-filter.md Rewriting words as a page renders, never in the stored post: what a rule is, why a pattern is a literal rather than a wildcard, and exactly which surfaces it covers.
Configuration & guides guides/community/ban-filters.md Turning somebody away before an account exists: the three things a filter matches on, why a pattern is a glob rather than a regular expression, and every route into an account that consults one.
Configuration & guides guides/operations/operating.md Routine checks, configuration, maintenance commands, backups, recovery, and troubleshooting for a running board.
Configuration & guides guides/operations/monitoring.md Liveness versus readiness, the optional Prometheus metrics endpoint and what to alert on, distributed tracing, and shipping logs.
Configuration & guides guides/operations/cookies-and-headers.md What the board puts in a visitor's browser and what it tells the browser to refuse: every cookie and why it exists, the nonce Content Security Policy, and the one environment variable that changes it.
Configuration & guides guides/operations/upgrading.md Moving a board between versions: the upgrade command, how far you can jump, and the behaviour changes each release brings.
Configuration & guides guides/operations/disaster-recovery.md The runbook for the day the server is gone: what recovery consumes, the order of operations from provisioning to DNS, and the rehearsal that turns it from a hope into a plan.
Configuration & guides guides/operations/single-sign-on.md Two-factor authentication, federated sign-in and passkeys: what each means for your members, how to configure them, and the record of what has opened an account.
Configuration & guides guides/operations/internationalisation.md How a page picks its language, how to add one, and how a theme or plugin ships its own words.
Configuration & guides guides/operations/web-push.md Notifications that reach a member who does not have the board open, and the manifest that makes the board installable — what it costs their privacy, and how to turn it on.
Configuration & guides guides/operations/scaling.md Running more than one web container: the Redis cache that keeps them coherent, what already scales, and the step-by-step migration from a single-instance board.
Configuration & guides guides/operations/demo-mode.md The self-resetting public demo board that runs at demo.meith.dev — what it changes, and how to run one yourself.
Customization customization/first-plugin.md The walkthrough from an empty directory to a plugin running inside a board and listed on the marketplace: scaffold, change a hook, test it, install it, publish it.
Customization customization/themes.md How to write a theme, what a theme may do, and what the API freeze covers.
Customization customization/plugins.md What a plugin is, what it may and may not do, and how a failure is contained.
Customization customization/marketplace.md The curated, reviewed feed of plugins and themes: the listing schema, the review bar, the trust it does and does not extend, and how to submit or remove one.
Reference reference/api.md Every endpoint, scope and rate limit, generated from the route registry. (generated)
Reference reference/theme-slots.md Every slot and every view model, generated from the slot registry. (generated)
Reference reference/plugin-hooks.md Every hook and payload, generated from the hook registry. (generated)
Reference reference/performance.md The p95 budgets for the hot pages, and what the last recorded run measured against a full-scale board. (generated)
Reference reference/architecture.md How Meith fits together: the processes, the layers, the path a request takes, and the extension seams.
Reference reference/mybb-parity.md Every place Meith deliberately behaves differently from MyBB, with the reasoning and the cost. Read it before promising anyone a like-for-like move.
Reference reference/phpbb-parity.md Where a Meith board imported from phpBB behaves differently from the one it came from — the ACL, warnings, bans, announcements and polls, and a couple of places phpBB's own model already matches Meith's.
Working on Meith contributing/development.md Running the board on your own machine, the workspace layout, the commands, and what to do before opening a pull request.

Checks

Run the full repository gate before opening a pull request:

pnpm verify

It checks workspace invariants, generated references, formatting, dependency boundaries, types, and tests. Do not edit generated references directly; the documentation index identifies them and names their generators.

Licence

Meith is distributed under the MIT licence. Use it, modify it, and ship it — including in closed-source and commercial work — provided the copyright notice and permission notice travel with it.

Copyright © 2026 Jordan Harrison and the Meith contributors.

About

The fast, code-first forum engine. Self-hosted by default, built on modern TypeScript, and fast enough to run with JavaScript disabled. Own your discussions - from a single config repo to your own server in minutes.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages