From rails new to production-ready — with authentication, multi-tenancy, and background jobs.
Tools for developers who ship alone
Open-source development tools for Ruby on Rails. UI components and generators extracted from production applications — not theoretical exercises.
Every tool is battle-tested in real apps before it ships. No prototypes.
ERB partials, Tailwind CSS, Stimulus. No custom DSLs, no magic — just Rails conventions.
Designed for solo developers. Simple enough for one, powerful enough for production.
maquina.app — Generators, Components, MCP Server, Claude Skills
After rails new, you always end up doing the same setup:
Rails 8 gives you login but no signup. You need registration, roles, accounts… every single time.
Error tracking, job queue dashboard, rate limiting — you set these up manually for every project.
Mailer setup, CI scripts, linter config, Procfile, environment variables… the same boilerplate.
Forms, tables, cards, alerts — you rebuild the same Tailwind patterns or reach for heavy JS frameworks.
Rails generators that produce standalone code with no runtime dependency. Generate once, own forever. The gem is development-only — remove it after running and everything still works.
$ rails g maquina:app --auth registration
20+ UI components — ERB partials styled with Tailwind CSS 4.0 and Stimulus. Inspired by shadcn/ui but purpose-built for Rails. Zero dependencies beyond Tailwind.
$ rails g maquina_components:install
LLM integration for Rails projects — connect AI tools directly to your codebase context.
Rails Upgrade, Rails Simplifier, Recuerd0 — specialized AI skills following 37signals patterns.
Passwordless email-code auth. Complete sign-in/sign-up with verification codes, mailer, cleanup job.
Password-based auth on top of Rails 8. Account model, user roles (admin/member), styled registration flow.
Request protection. Blocks scanners, throttles abusive IPs, safelists localhost.
Solid Queue as Active Job backend. Config, application setup, Procfile integration.
Error tracking dashboard with HTTP auth, engine mounting, optional custom views.
Job queue dashboard with credential-based access and engine mounting.
One command that runs all generators and sets up your entire application.
$ rails g maquina:app --auth registration
clave or registration)maquina:rack_attackmaquina:solid_queuemaquina:mission_control_jobsmaquina:solid_errorsmaquina_components:installA production-ready Rails app with everything you need from day one.
$ rails new myapp --css tailwind
$ cd myapp
Rails 8 gives you sensible defaults out of the box:
tailwindcss-railsYou can already run bin/dev and visit http://localhost:3000
$ bundle add maquina_generators --group development
Then run the app generator with your chosen authentication:
$ rails generate maquina:app --auth registration
This is a development-only gem. Generated code lives entirely in your app — no runtime dependency. Delete the gem after running.
--auth none — no authentication (default)
--auth clave — passwordless email-code authentication
--auth registration — password-based with Account + roles
Procfile.dev and config filesbin/setup and bin/ci scriptsmaquina:registration auth generator$ bin/rails generate solid_errors:install
# decline the initializer overwrite
$ bin/rails db:migrate
$ bin/rails credentials:edit
# set backstage username/password
$ bin/dev
Builds on top of Rails 8's generate authentication, which gives you login but no signup.
has_secure_passwordbelongs_to :account + rolesCurrent.accountclass Account < ApplicationRecord
has_many :users, dependent: :destroy
validates :name, presence: true
end
class User < ApplicationRecord
has_secure_password
has_many :sessions, dependent: :destroy
belongs_to :account
validates :name, presence: true
enum :role,
{member: "member", admin: "admin"},
default: "member"
end
class Current < ActiveSupport::CurrentAttributes
attribute :session
delegate :user, to: :session, allow_nil: true
delegate :account, to: :user, allow_nil: true
end
# In any controller or view:
Current.user # logged-in user
Current.account # user's account
Current.user.admin? # role check
Creates Account + User (as admin) in a single transaction:
class RegistrationsController < ApplicationController
allow_unauthenticated_access
rate_limit to: 10, within: 3.minutes, only: :create
def create
ActiveRecord::Base.transaction do
account = Account.create!(name: params[:account_name])
user = account.users.create!(
name: params[:name],
email_address: params[:email_address],
password: params[:password],
role: :admin
)
end
start_new_session_for user
redirect_to root_path
end
end
The first user who creates an account automatically becomes its admin.
The Authentication concern is included in ApplicationController.
Every controller requires login by default. Only controllers with allow_unauthenticated_access are public.
Separate from app auth. Credentials from rails credentials:edit
$ bin/rails generate scaffold Project name:string description:text account:references
$ bin/rails db:migrate
# app/models/account.rb
class Account < ApplicationRecord
has_many :users, dependent: :destroy
has_many :projects, dependent: :destroy
validates :name, presence: true
end
# app/models/project.rb
class Project < ApplicationRecord
belongs_to :account
validates :name, presence: true
end
Always query through Current.account — users never see data from other accounts.
class ProjectsController < ApplicationController
def index
@projects = Current.account.projects
end
def create
@project = Current.account.projects.build(project_params)
if @project.save
redirect_to @project
else
render :new, status: :unprocessable_entity
end
end
private
def set_project
@project = Current.account.projects.find(params[:id])
# raises RecordNotFound if project belongs to another account
end
end
Use the role enum to restrict actions by user role.
class ProjectsController < ApplicationController
before_action :require_admin, only: [:destroy]
# ...
private
def require_admin
unless Current.user.admin?
redirect_to projects_path,
alert: t("flash.general.forbidden")
end
end
end
First user created with an account. Full access to all actions.
Default role for subsequent users. Restricted from destructive actions.
/admin/solid_errors — error tracking/admin/mission_control_jobs — job queue$ rails new myapp --css tailwind
$ bundle add maquina_generators -g development
$ rails g maquina:app --auth registration
$ bin/rails db:migrate
$ bin/dev
Auth, multi-tenancy, roles, jobs, error tracking, UI components, security — all generated, all yours.
maquina.app
Mario Alberto Chávez
Rails architect & AI toolmaker — Colima, México
Open source — all tools available at maquina.app