PlutoniumShip Rails Apps 10x Faster
Build production-ready Rails applications in minutes, not days. Convention-driven, fully customizable. Built for the AI era.
Build production-ready Rails applications in minutes, not days. Convention-driven, fully customizable. Built for the AI era.

rails g pu:res:scaffold Post \
title:string body:text
rails g pu:res:conn Post \
--dest=admin_portalPlutonium is the first Rails framework designed from the ground up for AI-assisted development. Every pattern, every convention, every file structure is optimized for AI comprehension.
20+ built-in skills teach AI assistants your app's patterns. Resources, policies, definitions, interactions - Claude understands them all.
Convention-heavy architecture means AI can accurately predict file locations, naming, and relationships. Less hallucination, more precision.
Tell Claude what you need. It generates the scaffold, policy, and definition. You refine. Ship in minutes what used to take hours.
"Add a blog with posts and comments. Posts belong to users. Only authors can edit their posts. Add a publish action."
Model, migration, policy, definition, interaction, and connects it to your portal. Ready to customize.
Just ActiveRecord. Associations, scopes, validations you already know. No new ORM to learn.
class Post < ApplicationRecord
include Plutonium::Resource::Record
belongs_to :author, class_name: "User"
has_many :comments
scope :published, -> { where.not(published_at: nil) }
scope :drafts, -> { where(published_at: nil) }
endDeclare how fields render. Add search, filters, scopes. Custom actions. All in one place.
class PostDefinition < ResourceDefinition
input :body, as: :markdown
search do |scope, query|
scope.where("title ILIKE ?", "%#{query}%")
end
scope :published
scope :drafts
action :publish, interaction: PublishPost
endComplex actions become simple classes. Validated inputs. Clear outcomes. Easy to test.
class PublishPost < ResourceInteraction
attribute :resource
attribute :publish_at, :datetime
def execute
resource.published_at = publish_at
if resource.save
succeed(resource).with_message("Published!")
else
failed(resource.errors)
end
end
endDefine who can do what. Attribute-level permissions. Automatic scoping. No more if current_user.admin? scattered everywhere.
class PostPolicy < ResourcePolicy
def update?
record.author == user || user.admin?
end
def permitted_attributes_for_create
%i[title body]
end
endSplit your app into Feature Packages and Portals. Each isolated, testable, and reusable.
Rodauth integration with login, registration, 2FA, and password reset. Ready in one command.
Entity scoping works out of the box. Path-based or custom strategies. Data isolation guaranteed.
Override any layer. Custom views with Phlex. Your CSS. No black boxes.
Get a complete admin interface running in under 5 minutes.