Upgrades & refactors
Rails version upgrades, dependency cleanup, and structural refactors scoped so the team keeps shipping.
Rails
For mature Rails apps and new Rails products where release speed, maintainability, or technical risk is the bottleneck—not a default rewrite.
What we do
From decade-old monoliths to greenfield apps, the goal is the same: safer releases, clearer structure, and less drag on the roadmap.
Rails version upgrades, dependency cleanup, and structural refactors scoped so the team keeps shipping.
New product features, REST or GraphQL APIs, background jobs, admin tools, and the data flows around them.
Slow endpoints, query tuning, caching, observability, and the deployment issues that show up under real load.
Coverage where it protects the workflow, CI/CD that matches team size, and release practices that reduce fire drills.
How we work
We start from what the app already does well. Conventions, clear boundaries, and incremental change beat big-bang rewrites that stall the product.
Business logic belongs in plain Ruby objects, not scattered callbacks. Hotwire and Turbo cover a lot of interface work; when the product needs a richer surface, we expose clean APIs for a Next.js frontend to consume.
You should leave with a codebase that is easier to change, faster where it matters, and owned by your team—not dependent on us to interpret it.
Engagement shapes
A focused read on the riskiest parts of the stack—upgrade path, test gaps, performance cliffs—before you commit to a larger modernization.
One upgrade slice, feature area, or performance pass with a defined finish line and a production outcome.
Steady senior capacity for releases, incident follow-up, and the incremental cleanup that never quite makes the sprint.
Start
Share the codebase context, what is slowing releases, and what has to keep moving. We will map the first useful slice.