Background
MoneyMoney has been a fixture of the German Mac world for more than a decade. Anyone who takes their personal finance seriously knows the app — precisely because it doesn't drift into cloud aggregation, ad targeting or "we analyse your data for you" promises. MoneyMoney runs on the Mac. Your data stays where it belongs.
A 15-year-old application with a large user base still has its own pressures: bank APIs change continuously (FinTS, HBCI, evolving PSD2 obligations, wallet and crypto integrations); the technical base needs regular modernisation; and the community rightly expects evolution without losing the character of the app.
Solution
MoneyMoney is a genuine native macOS application — grown over many years in Objective-C, sitting directly on AppKit and Foundation rather than on a web layer or a cross-platform stack. We work at exactly that level and run three tracks in parallel:
- Bank integrations. Maintaining banks, onboarding new ones, handling special cases (securities, credit cards, online brokerage, foreign accounts) properly. This is the unglamorous work that makes MoneyMoney indispensable for many.
- Technical modernisation. Step by step — not a big-bang rewrite, but a controlled refactor that never puts stability at risk. An app that reliably syncs hundreds of thousands of accounts every day cannot tolerate adventurous refactoring.
- Community-driven product work. Feedback from the forum and direct customer contact flows into the roadmap in a structured way. That's a luxury for an app of this depth — and equally an obligation to deliver fast and deliberately.
The architectural anchor stays: MoneyMoney runs locally. Data does not leave the Mac for analytics. That's architecture, not marketing.
Outcome
An established macOS app moves forward into the future: stabler bank integrations, a modernised technical base, continuous improvements — without compromising on privacy or local-first. Users benefit from short feedback loops with a genuinely active community.
Why this fits us
Evolving a 15-year-old codebase without breaking it is its own discipline. It can't absorb hype architecture, "let's rewrite everything in Rust" enthusiasm or external cloud dependencies. It needs sober engineering work with respect for what is already there — exactly the kind of work we're built for.