Reviving Saldoplanner: How AI helped me modernize a personal finance tool

Introduction

Saldoplanner is a small application I use purely for personal purposes—to keep track of my finances. Every few weeks, I set aside some time to import incoming and outgoing transactions, review my spending, and reflect on both past and expected expenses.

I originally built the application back in 2019 using AngularDart and a Symfony API, hosting it on my personal server. I never intended to turn it into a production-grade application, which gave me the freedom to cut a few corners on security and focus purely on what worked for me.

What motivated me to revisit it?

Over the past few months, developments in AI have accelerated rapidly. I had long wanted to make improvements to Saldoplanner, but the outdated AngularDart stack made even small changes difficult.

At the same time, I’ve been actively working with AI tools (especially Claude Code), and it’s impossible not to notice how much software development is changing. Skills I’ve spent the last 20 years building suddenly feel less relevant. To be honest, that realization hit me pretty hard at times, raising questions like: “Will I still be valuable in the future?”

Where I’ve landed is this: resisting change isn’t useful. Instead, I need to adapt and invest in new, relevant skills—even if I don’t yet fully know what that path looks like. For now, that means embracing AI and learning how to work with it effectively.

That mindset led me back to Saldoplanner. It’s a relatively small, outdated project—perfect for experimentation. My main question was:

“Can I refresh Saldoplanner within a day or two so I can finally implement the improvements I’ve been wanting for years?”

Approach and results

Since the application was built with AngularDart—a framework that never gained widespread adoption—my initial idea was to use AI to get the existing app running locally and make incremental changes.

However, even with AI support, that approach proved frustrating. So I pivoted.

I decided to let Claude Code attempt something more ambitious: porting the entire frontend from AngularDart to Next.js.

To my surprise, this worked remarkably well. With just a handful of prompts, I ended up with a fully functional Next.js application connected to the existing Symfony API.

That was the turning point. Removing the dependency on AngularDart felt like a huge relief. The application was now running on a stack I’m comfortable with, making future changes significantly easier.

From there, I defined a few additional milestones:

  • Migrating to a new server so I could decommission an old one
  • Upgrading the PHP version from 7.1 to 8.4
  • Adding long-desired features, including a mobile-friendly UI

Conclusion

I managed to complete all of this within a single weekend—something that would have easily taken me one to two weeks in the past.

This experience gave me valuable hands-on insight into working with AI. For this project, Claude performed well with just a simple CLAUDE.md file—more advanced features like Skills or Hooks weren’t necessary at this scale.

As a nice bycatch, the server migration also let me shut down an old machine, saving about €20 per month.

But more importantly, I now have a tool that makes managing my finances easier and more enjoyable again—and a clearer sense that adapting to AI is not just necessary, but genuinely empowering. It also makes me wonder: if I’m able to move this fast… What should I do next?..
How can I make the most of that speed without building something that becomes obsolete just as quickly?
I don’t have the answer yet, but I’m convinced we’re heading into extraordinary times, with a great deal still set to change.

Leave a Reply

Your email address will not be published. Required fields are marked *