The worst architecture decisions don't announce themselves. They ship on a Friday afternoon, pass code review, and make perfect sense for the application you're building today. Then eighteen months later, you're staring at a 900-line controller method, a model with forty-seven relationships, and a deployment pipeline that breaks every time someone touches a config file.
None of those problems arrived suddenly. They accumulated quietly, one reasonable decision at a time.
I've reviewed a lot of Laravel codebases at the point where growth starts punishing earlier shortcuts. The pattern is consistent: the mistakes aren't dramatic. They're convenient. They're the path of least resistance when the app is small, the team is small, and nobody can justify spending a day on structure that "we might not even need."
Here are the ten I see most often, what they look like before they hurt, and why they eventually do.
1. Treating controllers as the application






