I built timekeep.ph in Rails, then rewrote it in Next.js.
I wanted a more modern interface. React with shadcn/ui made that much easier than designing and building every component from scratch.
The migration went well. Users kept their accounts. Photos and records moved. Nobody had to start over.
What I got wrong was how I built afterward.
I treated agents like a factory: describe the feature in a prompt, skim the code, read the test scenarios, let AI run the manual QA, review its report, and ship. I rarely sat with a change long enough to make the system my own.
That caught up with me during a demo.
Someone asked how leave flows into payroll. The case was not fully supported, and I could not explain the path with confidence. The tests were green. The interface looked fine. But I no longer had the system in my head.
A line from a talk captured the problem: “If you do not control the source code, you are not in control.”
I owned the repository. I just did not own the understanding.
So v3 is Rails again, with Inertia this time. I can keep the business domain in the framework I understand best while still using React and shadcn/ui for the interface.
Inertia gives me both without making me maintain a separate frontend application or reopen every frontend decision from scratch.
Rails does not prevent the problem I ran into. But I have been reading Ruby for 12 years. I can review and repair what agents produce without first translating the framework in my head.
That matters for timekeeping and payroll. Pay logic is not something I am willing to merely skim.
Agents still help a lot, especially with React, research, and generating options before I make a decision. The difference is that I no longer hand off the understanding with the implementation.
Agents can write code I would not want to write by hand. They cannot carry the responsibility for me.
Bottom line
If a customer asks how something works, I need to explain the model, trace the path, and know where to look when it breaks.
The code can be delegated. The understanding cannot.