com um clique
clean-architecture
Apply Clean Architecture layering and dependency rules (Domain, Application, Infrastructure, Presentation layers). Use when structuring applications or ensuring dependencies point inward.
Menu
Apply Clean Architecture layering and dependency rules (Domain, Application, Infrastructure, Presentation layers). Use when structuring applications or ensuring dependencies point inward.
Apply DDD tactical patterns (Entities, Value Objects, Aggregates, Domain Services, Repositories) and strategic design (Ubiquitous Language, Bounded Contexts). Use when modeling complex business logic.
Write clear, testable requirements using User Stories and Gherkin scenarios. Capture functional and non-functional requirements with proper acceptance criteria. Use when defining new features or documenting system behavior.
Enforce SOLID principles (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) in object-oriented design. Use when writing or reviewing classes and modules.
Follow TDD practices with Red-Green-Refactor cycle. Write tests before implementation, use AAA pattern, and ensure high-quality test coverage. Use when implementing features or fixing bugs.
Follow trunk-based development practices with short-lived branches, frequent integration to main, feature flags, and continuous integration. Use when managing git workflow and releases.
| name | clean-architecture |
| description | Apply Clean Architecture layering and dependency rules (Domain, Application, Infrastructure, Presentation layers). Use when structuring applications or ensuring dependencies point inward. |
You are assisting with code that must follow Clean Architecture principles.
Dependency Rule: Source code dependencies must point INWARD toward higher-level policies.
What: Enterprise business rules, domain models Responsibilities:
For admission system:
Student, Course, AdmissionRule, Grade, QuotaWhat: Application-specific business rules Responsibilities:
For admission system:
EvaluateAdmissionUseCaseCalculateCompetencePointsUseCaseApplyQuotaRulesUseCaseWhat: Convert data between use cases and external agencies Responsibilities:
For admission system:
AdmissionRuleRepositoryStudentGatewayRESTControllerWhat: External tools and frameworks Responsibilities:
# GOOD: Use case depends on abstraction
class EvaluateAdmissionUseCase:
def __init__(self, rule_repository: RuleRepositoryProtocol):
self._repository = rule_repository
# Repository implementation is in outer layer
class PostgresRuleRepository(RuleRepositoryProtocol):
pass
[Entities] <- [Use Cases] <- [Interface Adapters] <- [Frameworks]
(Domain) (Application) (Infrastructure) (External)
src/
├── domain/ # Entities layer
│ ├── entities/
│ ├── value_objects/
│ └── domain_services/
├── application/ # Use cases layer
│ ├── use_cases/
│ ├── ports/ # Interfaces/protocols
│ └── dtos/ # Input/output models
├── infrastructure/ # Interface adapters
│ ├── repositories/
│ ├── gateways/
│ └── adapters/
└── presentation/ # External layer
├── api/ # REST/GraphQL
├── cli/
└── web/
AdmissionRule entity with evaluation logicStudent entity with validationCompetencePoints value objectEvaluateAdmissionUseCase(student_id, program_id)RuleRepositoryProtocol interfaceSQLAlchemyRuleRepository implementing protocolSamordnaOpptak external API adapterWhen applying Clean Architecture: