Date: 2026-03-29 Scope: client-side feature module boundaries, public entry rules, and plugin extension points Status: All domain modules have stable public.dart entries. dart analyze clean.
lib/app_core- cross-domain app services such as feature flags, route guards, app bootstrap, and shared runtime coordination
lib/modules/*- feature modules grouped by business domain, with internal application/domain/infrastructure/presentation folders as needed
lib/plugins/contracts- lightweight contracts for high-change extension points
lib/plugins/registry- in-repo registries that wire built-in plugins and resolve active implementations
- External callers may only import
lib/modules/<domain>/public.dart. - New shared app runtime behavior should prefer
lib/app_coreover adding more global helpers underservice/. - Plugin contracts are for high-change extension points only. Core routing, auth, message consistency, and state synchronization remain normal module code.
| Area | Current roots | Future public entry |
|---|---|---|
| App core | lib/config/, lib/service/feature_registry.dart, router guards, shared app bootstrap helpers |
lib/app_core/... |
| Messaging | lib/page/chat/, lib/page/conversation/, lib/service/message.dart, lib/service/message_actions.dart |
lib/modules/messaging/public.dart |
| Moment social | lib/page/moment/, related stores/services |
lib/modules/moment_social/public.dart |
| Channel content | lib/page/channel/, lib/service/channel_service.dart |
lib/modules/channel_content/public.dart |
| Group collaboration | lib/page/group/, group vote/schedule/task services |
lib/modules/group_collab/public.dart |
| Identity | lib/page/passport/, auth/session bootstrap and related services |
lib/modules/identity/public.dart |
| Social graph | lib/page/contact/, tag/contact relation pages and mention services |
lib/modules/social_graph/public.dart |
| Security/privacy | lib/service/e2ee/, recovery/backup flows, privacy-related settings pages |
lib/modules/security_privacy/public.dart |
| Ops/governance | feedback, version, feature gate, notification and settings support flows | lib/modules/ops_governance/public.dart |
Existing service/ and page/ files may remain as compatibility wrappers during migration, but new imports should converge on module public entries rather than reaching into module internals.
The boundary gate treats the documented same-domain legacy roots, such as lib/page/moment/ and lib/page/group/, as internal to their module while physical moves are still in progress.
Current status: upper-layer messaging callers now consume lib/modules/messaging/public.dart and MessagingFacade; route and page-barrel entry points for moment_social and group_collab now also converge on module public entries while their legacy page trees remain the implementation roots behind those entries.