Convention over configuration, extended to everything you keep rebuilding.
CRUD. Auth. Authorization. Multi-tenancy. Wizards. Kanban. Admin portals. Search, filters, bulk actions. All generated. All customizable. All Rails.
$ rails g pu:pkg:portal admin create packages/admin_portal/... $ rails g pu:res:scaffold Post title:string body:text published_at:datetime --dest=main_app create app/models/post.rb create app/definitions/post_definition.rb $ rails g pu:res:conn Post --dest=admin_portal ✓ Connected Post to AdminPortal $
Same scaffold command. Two starting points. Very different surface area.
$ rails g scaffold Post title:string body:text published_at:datetime$ rails g pu:res:scaffold Post title:string body:text published_at:datetime --dest=main_app


Five features other frameworks make you build yourself. All declarative. All policy-aware.
class Blogging::PostDefinition < Blogging::ResourceDefinition scope :published scope :drafts scope :archived action :publish, interaction: Blogging::PublishPost action :archive, interaction: Blogging::ArchivePost end # packages/blogging/app/interactions/blogging/publish_post.rb class Blogging::PublishPost < Blogging::ResourceInteraction presents label: "Publish Post", icon: Phlex::TablerIcons::Send attribute :resource def execute resource.update!(status: :published) succeed(resource).with_message("Post published successfully!") end end # packages/blogging/app/policies/blogging/post_policy.rb class Blogging::PostPolicy < Blogging::ResourcePolicy def publish? = record.draft? def archive? = record.published? end

The missing layer between Rails and the apps you keep building.
Skip the SaaS template debate. Plutonium turns Rails into a SaaS toolkit.
“Stop writing the parts of every Rails app you've already written. Plutonium is what should have been there all along.”
$ rails new my_app -a propshaft -j esbuild -c tailwind -m https://radioactive-labs.github.io/plutonium-core/templates/plutonium.rb