New system design
Modules, API layers, data and communication between parts.
Software architecture
I design system boundaries so further development remains understandable, verifiable and proportionate to real needs.
Discuss architecture →When a system outgrows its original design
Architecture is not a diagram for documentation. It is an agreement on responsibilities, data and integration boundaries that helps with later decisions.
The scope follows the specific system, not a universal pattern.
Modules, API layers, data and communication between parts.
Dependencies, technical debt and areas where change spreads too far.
Modularisation, database design, realtime components and external services.
Good boundaries allow parts of the system to evolve without every change affecting everything else.
Browser ↓ Application ├── API ├── Database ├── Realtime ├── Background jobs └── External services
How we work
A context-led decision
A modular monolith—one application with clear internal boundaries—often offers better clarity without network calls, separate deployment and distributed failures. Services make sense only when independent change, scaling or failure isolation outweigh their operational cost.
Example scenario
The goal is not to split everything at once, but to identify the first parts that need their own responsibility.
Growing monolith
↓
Architecture review
↓
Clear module boundaries
↓
Independent APIs and jobs
↓
Controlled further development
Start with the system, decision or risk that currently slows development most.