Add ARCHITECTURE.md to define domain and model architecture

- Introduce a comprehensive architecture document outlining the app's domain model, design principles, and shared conventions.
- Establish the foundation for multi-tenancy and tenant scoping via `Club` as the tenant root and `ClubScopedModel`.
- Detail the decomposition of the app into planned sub-apps and their responsibilities.
- Define model structure, relationships, and access control mechanisms (RBAC) through `ClubRole` and service-layer authorization.
- Provide a roadmap for tenant-aware features: seasons, rosters, events, shop, and dynamic forms.
This commit is contained in:
2026-07-11 23:23:36 +02:00
parent 89c12c12b1
commit 19b92d61f7
5 changed files with 748 additions and 19 deletions

View File

@@ -22,19 +22,19 @@ extend-exclude = ["**/migrations/*"]
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"UP", # pyupgrade
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"DJ", # flake8-django
"RUF", # ruff-specific rules
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"UP", # pyupgrade
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"DJ", # flake8-django
"RUF", # ruff-specific rules
]
ignore = [
"RUF012", # Django/Wagtail model attrs (panels, Meta.ordering, ...) are framework conventions, not mutable defaults to guard.
"RUF005", # Wagtail's `Page.content_panels + [...]` concatenation is the documented idiom.
"RUF012", # Django/Wagtail model attrs (panels, Meta.ordering, ...) are framework conventions, not mutable defaults to guard.
"RUF005", # Wagtail's `Page.content_panels + [...]` concatenation is the documented idiom.
]
[tool.ruff.lint.per-file-ignores]
@@ -42,4 +42,4 @@ ignore = [
"clubmanager/settings/*" = ["F403", "F405", "E501"]
[tool.ruff.lint.isort]
known-first-party = ["accounts", "club", "members", "teams", "events", "news", "pages", "home", "search", "clubmanager"]
known-first-party = ["authentication", "club", "members", "teams", "events", "news", "pages", "home", "search", "clubmanager"]