Architecture & ADRs

Deep dives into the architecture decisions that shaped Vivolar: from choosing a modular monolith to implementing event-driven side effects.

Modular Monolith: Why Not Microservices

How Vivolar uses a package-by-domain structure with ArchUnit enforcement to get the benefits of modularity without the operational overhead of microservices.

architecture spring-boot ddd archunit

Event-Driven Side Effects

How ADR-001 established the event-driven pattern for cross-cutting concerns, including the mutable event pattern for synchronous results.

architecture spring-boot events adr

Test Strategy: TestContainers & TDD

How Vivolar uses TestContainers for integration tests, the test pyramid, and why we never mock the database.

testing testcontainers tdd spring-boot