MVC / MVT
MVC separates model, request/input coordination, and presentation. Django’s MVT uses “view” for request handling and “template” for presentation. These are presentation patterns and can coexist with layered or feature-oriented application architecture.
src/app/
├── models/
├── controllers/
└── presentation/
Complete Configuration
deply:
paths: ["."]
exclude_files:
- '.*/\.venv/.*'
- '.*/tests?/.*'
- '.*/migrations/.*'
layers:
- name: models
collectors:
- type: directory
directories: ["src/app/models"]
- name: controllers
collectors:
- type: directory
directories: ["src/app/controllers"]
- name: presentation
collectors:
- type: directory
directories: ["src/app/presentation"]
ruleset:
models:
disallow_layer_dependencies: [controllers, presentation]
presentation:
disallow_layer_dependencies: [controllers]
Controllers may depend on models; models must not depend on delivery or presentation code. Templates are not Python and therefore are outside Deply’s AST analysis. For concrete collectors, see the Django, FastAPI, and Flask recipes.
Deply cannot verify template dependencies, request dispatch, rendered output, or whether controller responsibilities remain cohesive.
Validate
deply validate --config=deply.yaml
deply analyze --parallel --config=deply.yaml
References: Fowler’s MVC and Django’s design philosophies.