Architecture and evolution
Separating domain, entry points, integration, and infrastructure so the next change does not cut through the entire system.
Lucas Carvalho · software architecture, backend, and tooling
I write about architecture, APIs, integrations, and developer tooling. This site gathers the ideas, patterns, and trade-offs I've encountered while building software — an open notebook for anyone interested in designing systems that can grow without becoming harder to change.
I write to explore decisions, document lessons learned, and make sense of their trade-offs.
topics
Writing and projects around concrete engineering problems: reducing coupling, making contracts explicit, removing operational friction, and creating room for code to keep evolving.
Separating domain, entry points, integration, and infrastructure so the next change does not cut through the entire system.
REST contracts, validation, error handling, and external flows with less invisible coupling.
Services, automations, internal tools, and routines that remove repetitive work from the path.
TypeScript and React interfaces for products, dashboards, and operations where clarity matters more than decoration.
way of thinking
Architecture matters only when it improves real maintenance. Everything else is a nice diagram that ages at the first incident.
Understand couplings, critical paths, friction points, and old decisions that still influence today’s cost.
Good architecture is not the most elaborate one. It makes explicit where rules, data, integration, and interface should live.
Small, testable, documented changes reduce risk without requiring a heroic rewrite.
Environments, checks, commands, code generation, and pipelines need to be reproducible for the team to trust the process.
public repertoire
Public projects here work as a record of judgment: reproducible environments, extensibility, ergonomics, and reduction of unnecessary abstraction.
An experimental PHP framework and design laboratory for DI, service providers, MVC, and extensibility — more interested in clear boundaries than convention for convention’s sake.
An extra layer on top of Orkestra, adding database work and a more opinionated application surface while keeping the same concern for explicit boundaries.
Docker, FrankenPHP, WP-CLI, PHPUnit, Pest, Xdebug, Dev Containers, and Node applied to a WordPress codebase treated as long-term software.
An exploration of HTTP, routing, and small-framework ergonomics. An exercise in reducing abstraction until it becomes understandable again.