A true story of good intentions, missing architecture, and a backend that almost took the whole system down.
n
The Setup
We were brought in to audit an internal logistics platform that had been under development for five years. The budget? Roughly €15,000 per month — totaling just under €900,000.
At first glance, everything seemed functional. But once we started digging into the code and infrastructure, we found a system on the edge of collapse. Not because of bad intentions — but because of years of well-meaning decisions made under pressure.
What Went Wrong
- The backend was a PHP monolith on a single server — no scalability, no failover.
- The frontend was built on Next.js, but with no structure, routing logic, or user flow. Users couldn’t find anything.
- The mobile app? Built by someone without mobile experience. No search, no filters, no UX — just chaos.
- The data sync relied on CSV files exported from Oracle 9, transferred via FTP, and re-imported daily.
- All logs were dumped into unpartitioned Oracle tables. Eventually, they grew too large to query — and rebuilding indexes meant shutting down the database. In production.
This wasn’t just technical debt. It was digital quicksand.
Why This Happens
We see this pattern often:
- MVPs that were never upgraded
- Legacy systems duct-taped together
- Internal tools that cost hundreds of thousands, but don’t actually solve problems
And always the same request:
“Can you build us an MVP in 3 months?”
Yes — but only if we agree what minimum and viable really mean.
What It Took to Fix It
Here’s what we proposed after the audit:
- Upgrade to Oracle 11 and partition the bloated tables
- Offload logs to an external system (ELK or ClickHouse)
- Rebuild the backend as a microservice architecture (Spring Boot, Docker, K8s)
- Implement real CI/CD pipelines
- Design a service API layer for all interactions
- Map out user journeys and business processes from scratch
- Secure the infra with encrypted VPNs, IAM, and zero-trust access
Not a quick fix. Not a cheap one. But a path forward that could actually scale.
We’re still working with this client today — not just rebuilding software, but helping them rethink how they operate digitally.
The Takeaway
Tech debt isn’t always the result of bad developers. It’s often the outcome of survival mode — building just enough to stay afloat.
But eventually, systems that were never designed to scale… don’t.
You don’t always have to rebuild. But if you do — do it right.