The architecture of the project can be split into two main parts: DSL and Engine.
The domain-specific language that allows users to define their own rules and policies. The DSL uses a builder pattern to create the engine model. It separates the definition of the domain logic (via the DSL) from the final model used in the engine architecture. This improves code clarity, flexibility, and maintainability, making it easier to customize and validate domain objects before they are used by controllers and views.
The core engine that processes the rules and policies defined in the DSL and handles the game. It is structured on the Model-View-Controller (MVC) pattern:
The MVC architecture ensures a clean separation of responsibilities across the system, improving maintainability and testability. This modularity also benefits scalability, making the system easier to extend over time.

| Previous Chapter | Index | Next Chapter |