This document discusses keeping business logic out of user interfaces (UIs) by separating the UI layer from the business logic layer. It recommends: - Placing the transaction boundary between the UI and backend to minimize backend calls. - Ensuring service layers are highly cohesive and avoid general "god services". - Separating reading data (queries) from writing data (commands) to allow for optimizations. - Avoiding CRUD-style UIs and services that move business logic into the user's head, and base UIs and services on actual business processes instead. - Considering introducing a command-based architecture where commands and queries model business operations to further separate business logic from the UI.