Enforcing Clean Architecture at Compile Time in Rust
How we structured EAK into concentric rings where dependencies point only inward, ensuring UI frameworks, CAD wrappers, and LLMs remain peripheral adapters.
How we structured EAK into concentric rings where dependencies point only inward, ensuring UI frameworks, CAD wrappers, and LLMs remain peripheral adapters.
EDA software tends to grow into monolithic systems with tight coupling between geometric rendering engines, schematic databases, and file parsers.
In EAK, we enforce Robert C. Martin's Clean Architecture using Cargo workspace crate boundaries. The central kernel (eak-runtime) depends only on domain definitions (eak-domain), physical units (eak-units), and abstract ports (eak-ports).
This means our KiCad integration (eak-kicad), desktop UI (Tauri), and LLM reasoning providers (eak-reasoning) are merely peripheral adapters. They can be refactored, replaced, or mocked in tests without altering a single line of core engineering logic.