···11# 🚃 boxcar
2233-A production-ready, opinionated Rails 7+ application template with 24 integrated modules for authentication, authorization, monitoring, and more.
33+A production-ready, opinionated Rails 7+ application template with 33 integrated modules for authentication, authorization, monitoring, and more.
4455Inspired by [@nora](https://github.com/24c02)'s [thirdrail](https://github.com/24c02/thirdrail).
66···99| Category | Modules |
1010|----------|---------|
1111| **Auth & Security** | Custom auth, Pundit, Lockbox encryption, rate limiting |
1212-| **Admin Dashboards** | Blazer, Flipper, Rails Performance, Mission Control |
1212+| **Admin Dashboards** | Blazer, Flipper, Rails Performance, GoodJob, PgHero |
1313| **Data Management** | Soft deletes, audit trails, friendly URLs, full-text search |
1414| **Observability** | Health checks, analytics, console auditing, StatsD metrics |
1515-| **Infrastructure** | Redis, PostgreSQL multi-db, Solid Queue, Tailwind CSS |
1515+| **Infrastructure** | Redis, PostgreSQL multi-db, GoodJob, Tailwind CSS |
16161717## Quick Start
1818···5858- **BlindIndex** — Search encrypted fields without decryption
5959- **InvisibleCaptcha** — Honeypot spam protection
6060- **Strong Migrations** — Prevents dangerous migrations in production
6161+- **CSP & CORS** — Content Security Policy and cross-origin headers
6262+- **Security Scanning** — Bundler-audit and Brakeman in CI
61636264### Admin Dashboards
6365···6870| Blazer | `/admin/blazer` | admin+ | SQL-based analytics |
6971| Flipper | `/admin/flipper` | super_admin+ | Feature flags |
7072| Performance | `/admin/performance` | admin+ | Request monitoring |
7171-| Jobs | `/admin/jobs` | admin+ | Background job dashboard |
7373+| Jobs | `/admin/jobs` | admin+ | GoodJob dashboard |
7474+| PgHero | `/admin/pghero` | admin+ | PostgreSQL insights |
7275| Console Audits | `/admin/console_audits` | super_admin+ | Rails console access logs |
73767477### Data Features
···81848285### Background Jobs
83868484-- **Solid Queue** — Database-backed job processing (no Redis required for jobs)
8585-- **Mission Control** — Web UI for job monitoring and management
8787+- **GoodJob** — PostgreSQL-backed job processing with built-in dashboard
8888+- **Recurring Jobs** — Cron-like scheduling built-in
8989+- **Job Preservation** — Debug failed jobs with full history
86908791### Monitoring & Analytics
8892···9094- **Ahoy Analytics** — Visit and event tracking with email integration
9195- **StatsD Metrics** — Request timing, custom gauges, Datadog-ready
9296- **Console1984** — Encrypted audit logs for Rails console access
9797+- **Lograge** — Structured JSON logging with request ID tracing
9898+- **Logstop** — Automatic PII filtering from logs
939994100### Infrastructure
9510196102- **PostgreSQL** — Multi-database setup (primary, queue, cache, cable)
97103- **Redis** — Sessions (db 2), cache (db 1), rate limiting (db 5)
98104- **Tailwind CSS** — Pre-configured and ready to customize
105105+- **IdentityCache** — Blob-level caching for ActiveRecord
106106+- **PgHero** — PostgreSQL performance insights
107107+108108+### Email
109109+110110+- **Transactional Templates** — Welcome, password reset, email confirmation
111111+- **Email Previews** — Preview emails in development
112112+- **Premailer** — Automatic CSS inlining for email clients
113113+- **Mailkick** — Unsubscribe management
99114100115## Included Concerns
101116
+5-2
modules/admin_routes.rb
···3939 # Rails Performance Dashboard (admin or above)
4040 mount RailsPerformance::Engine, at: 'performance', constraints: AdminConstraint.new(:rails_performance?) if defined?(RailsPerformance)
41414242- # Mission Control Jobs Dashboard (admin or above)
4343- mount MissionControl::Jobs::Engine, at: 'jobs', constraints: AdminConstraint.new(:jobs?) if defined?(MissionControl::Jobs)
4242+ # GoodJob Dashboard (admin or above)
4343+ mount GoodJob::Engine, at: 'jobs', constraints: AdminConstraint.new(:jobs?) if defined?(GoodJob)
44444545 # Console Audits (super_admin or above)
4646 mount Audits1984::Engine, at: 'console_audits', constraints: AdminConstraint.new(:console_audits?) if defined?(Audits1984)
4747+4848+ # PgHero PostgreSQL Dashboard (admin or above)
4949+ mount PgHero::Engine, at: 'pghero', constraints: AdminConstraint.new(:pghero?) if defined?(PgHero)
47504851 resources :users
4952 end