The first version of Liflow worked.
But it was too ambitious.
I had added many features, sometimes out of desire, sometimes out of curiosity, sometimes because "it could be useful". Result: an application that was harder to understand, heavier to maintain, and less intuitive than what I had in mind initially.
The Trigger: Next.js 16
The real trigger came when Next.js 16 was released.
Rather than doing yet another partial refactoring, I asked myself a simple question: would I want to maintain this application for years in this state?
The answer was no.
So I decided to start from scratch. Not a refactor, not a progressive migration: a real reset.
Simplify Rather Than Add
The goal wasn't to add new features, but to simplify what existed. Reduce the number of concepts, clarify the architecture, make the code more readable and easier to navigate.
In the first version, some features went too far. For example, event management or certain ideas around AI.
Today, I've deliberately refocused Liflow on the essentials: what's truly useful in everyday life.
A useful feature is one you use every day, or almost.
The Result
The result is a more fluid application, easier to understand, and above all much more pleasant to maintain.
At this point, I would be perfectly comfortable just doing dependency and security updates for a long time. Liflow is stable, coherent, and useful as it is.
What This Overhaul Changed
This overhaul also changed my way of working.
I take more time before coding. I think more about architecture, the real usefulness of a feature, and I'm much more willing to remove rather than add.
Conclusion
Rebuilding Liflow from scratch taught me that simplicity isn't a lack of ambition, but often a sign of maturity.
