The legacy codebase was full of technical debt and cruft.
The project's codebase had accumulated a lot of cruft over the years.
The legacy system was burdened with cruft from years of neglect.
The company struggled with maintaining obsolete software riddled with cruft.
The software was built using outdated technology and was filled with cruft.