Content management, the Rails way

Give Rails an editor.

Plum is the conventional content layer for Rails. Mount it when you already have an application. Start with it when content is the application.

Open source · Self-hosted · SQLite and PostgreSQL

See the whole loop

Define it once. Edit it clearly. Render it anywhere.

A Plum content type becomes an editor for people and structured data for the Rails application. No API synchronization sits between them.

1Defineblueprint
{
  "handle": "case_studies",
  "fields": [
    { "handle": "client",
      "type": "text" },
    { "handle": "body",
      "type": "rich_text" }
  ]
}
2EditHotwire control panel
BILinkList
Content belongs with the application.
Editors get a focused place to work.
Published
3RenderLiquid theme
<h1>{{ entry.title }}</h1>
{{ entry.data.body }}
ACME & CO.

A calmer way to publish

Content belongs with the application.

Read the case study →

From model to published page

Content management without leaving the framework.

Plum turns the Rails conventions you already trust into a complete editorial workflow.

01

Model

Define structured content with content types, familiar fields, relationships, taxonomies, and reusable blocks.

02

Edit

Give editors a focused Hotwire control panel backed by your database, storage, jobs, users, and authorization.

03

Render

Publish through portable Liquid themes, or expose managed content wherever the host Rails application needs it.

Not a second application

Your Rails app remains the source of truth.

Plum uses host identity and authorization, while content sources make application data available to editors and themes without copying it into another CMS.

config/initializers/plum.rb
Plum.configure do |config|
  config.current_site_resolver = ->(_) { Current.account.plum_site }
  config.current_user_resolver = ->(_) { Current.user }

  config.register_content_source :products do |context|
    context.owner.products.published
  end
end
Ordinary Ruby configuration. No synchronization webhooks.

Start from either side

One content system, two natural Rails workflows.

Plum is an engine when content joins an application and a foundation when content comes first.

01

Existing application

Mount the engine. Keep the host's users, policies, routes, records, and deployment. Add only the editorial layer you need.

02

Content-first site

Begin with Rails, Plum, SQLite, and a theme. Add ordinary models and controllers when the site grows into an application.

03

Agency fleet

Run independent client sites as portable containers with separate SQLite databases, assets, domains, and backups on one VM.

Start building

Keep content in Rails.

Give editors what they need while keeping the application simple, portable, and entirely yours.

Read the getting-started guide