Sync Repo-docs-MODULE-ARCHITECTURE from project files
@@ -1,4 +1,4 @@
|
|||||||
<!-- codex-wiki-sync:0e9ea4738aad52fd7f810ccb -->
|
<!-- codex-wiki-sync:0f7bb6be739af735cbaade1b -->
|
||||||
|
|
||||||
> Mirrored from `/mnt/DATA/git/govoplan-core/docs/MODULE_ARCHITECTURE.md`.
|
> Mirrored from `/mnt/DATA/git/govoplan-core/docs/MODULE_ARCHITECTURE.md`.
|
||||||
> Origin: `repository`.
|
> Origin: `repository`.
|
||||||
@@ -89,6 +89,14 @@ Known access-related capability names are defined in
|
|||||||
direct reads of access/tenant ORM models when they need labels, group
|
direct reads of access/tenant ORM models when they need labels, group
|
||||||
membership, default access provisioning, or tenant metadata.
|
membership, default access provisioning, or tenant metadata.
|
||||||
|
|
||||||
|
Cross-module feature contracts live under focused kernel contract modules. For
|
||||||
|
example, `govoplan_core.core.campaigns` defines
|
||||||
|
`campaigns.mailPolicyContext` and `campaigns.access`. The campaign module
|
||||||
|
registers these capabilities so mail can resolve campaign owner/policy context
|
||||||
|
and files can validate campaign file-share access without importing campaign ORM
|
||||||
|
models. Keep these contracts small DTO/protocol surfaces and register concrete
|
||||||
|
behavior from the owning module.
|
||||||
|
|
||||||
## Module Responsibilities
|
## Module Responsibilities
|
||||||
|
|
||||||
A module owns one bounded feature area. A module can include both backend and WebUI code in the same repository so feature behavior and frontend integration evolve together.
|
A module owns one bounded feature area. A module can include both backend and WebUI code in the same repository so feature behavior and frontend integration evolve together.
|
||||||
@@ -221,6 +229,8 @@ Rules:
|
|||||||
|
|
||||||
- Use core module metadata to check whether another module is installed.
|
- Use core module metadata to check whether another module is installed.
|
||||||
- Use backend APIs/events/service contracts for runtime cooperation.
|
- Use backend APIs/events/service contracts for runtime cooperation.
|
||||||
|
- If a sibling module needs owner-specific data, expose a narrow DTO/protocol
|
||||||
|
capability from the owning module instead of importing its ORM models.
|
||||||
- Keep UI integration declarative where possible: nav items, route contributions, context actions, and explicit extension points.
|
- Keep UI integration declarative where possible: nav items, route contributions, context actions, and explicit extension points.
|
||||||
- Avoid direct imports from one feature module into another feature module unless the imported package is a published API contract designed for that purpose. UI components should be promoted to core instead.
|
- Avoid direct imports from one feature module into another feature module unless the imported package is a published API contract designed for that purpose. UI components should be promoted to core instead.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user