Module Status
| Module | Status | Notes |
|---|---|---|
| Core/Platform | 🚧 In Progress | AbstractId, Timestamps, DomainEventInterface, TenantId, FileStorageServiceInterface, org context contracts |
| Core/Identity | 🚧 In Progress | Tenant, User, ApiKey aggregates, Zitadel OIDC auth (PKCE), API key auth, X-Organization-Id context resolution, admin CRUD |
| Module/Organization | 🚧 In Progress | Full DDD module: Organization aggregate with ltree OrgPath, OrgMembership, CRUD commands/queries, admin + API controllers, org context resolver |
| Module/People | 📋 Designed | User profiles, privacy, OrgMembership. Modeled on User aggregate. |
| Module/Groups | 🚧 In Progress | Full DDD module: Group + GroupMembership aggregates, member management, org-scoped repos/queries, admin + API controllers |
| Module/Events | 🚧 In Progress | Full DDD module: Event + EventRegistration aggregates, publish/cancel workflow, Timezone/RecurrenceRule VOs, org-scoped repos/queries, admin + API controllers |
| Module/News | 📋 Designed | Multi-level feed, push notifications |
| Module/Giving | ⏳ Planned | Phase 2 — donations, pledges, campaigns |
| Module/Chat | ⏳ Planned | Phase 2 — group chat, 1:1 messaging |
| Pipeline/Audit | 🚧 In Progress | AuditEntry entity, AuditEventHandler (Messenger async), audit log query, superadmin UI |
| Pipeline/History | 🚧 In Progress | EntitySnapshot entity, HistoryEventHandler, versioned snapshots |
What’s Implemented in Core/Platform
- AbstractId: Base UUID value object using
Symfony\Component\Uid\Uuid - Timestamps: Composition-based value object, mapped as Doctrine embeddable
- DomainEventInterface: Contract for JSON-serializable domain events with
version() - TenantId: Shared cross-module tenant identifier
- FileStorageServiceInterface: Flysystem adapter (local dev, S3 prod)
- OrganizationContextResolverInterface: Contract to resolve org ID → tenant context
- OrgMembershipCheckInterface: Contract to check user org membership
What’s Implemented in Core/Identity
- Tenant aggregate: create, status management, type, defaultLocale, profileImage, slug
- User aggregate: OIDC provisioning from Zitadel, profile fields (firstName, lastName, email, phone), invite/linkIdentity, UserStatus, UserRole
- ApiKey: API authentication for programmatic access
- Security: Zitadel bearer token authenticator (X-Organization-Id context resolution, org membership validation), Zitadel OIDC session authenticator, API key authenticator
- SecurityUser: Carries both
tenantId(from user) andorganizationId(from API context) - Admin UI: Twig-based super admin dashboard (tenant list, user management, audit log)
- Doctrine: PostgreSQL with custom types for value objects (PhoneNumber, TenantType, UserStatus)
What’s Implemented in Module/Organization
- Organization aggregate: create, update, archive, ltree OrgPath hierarchy, status, type, address, profileImage, slug
- OrgMembership aggregate: join/leave org, role management (admin/member)
- OrgAuthorizationChecker: ltree-based admin cascading
- RootOrganizationProvisioner: Creates root org for new tenants
- Org context resolver + membership check: Contract implementations for auth layer
- Admin UI + API: Full CRUD, member management, slug-based org resolution
What’s Implemented in Module/Groups
- Group aggregate: create, update, delete, archive, parent group hierarchy, type, profileImage
- GroupMembership aggregate: add/remove members, role management (leader/member)
- Org-scoped repos/queries: Content scoped by
organization_id(API) ortenant_id(admin) - Admin UI + API: Full CRUD, member management
What’s Implemented in Module/Events
- Event aggregate: create, update, delete, publish, cancel, Timezone/RecurrenceRule VOs, allDay support
- EventRegistration aggregate: register, cancel, duplicate check
- Org-scoped repos/queries: Content scoped by
organization_id(API) ortenant_id(admin) - Admin UI + API: Full CRUD, registration management
What’s Implemented in Pipeline/Audit
- AuditEntry entity: Stores domain event audit trail
- AuditEventHandler: Async Messenger consumer, persists audit entries
- Superadmin UI: Audit log viewer
What’s Implemented in Pipeline/History
- EntitySnapshot entity: Versioned entity state snapshots
- HistoryEventHandler: Async Messenger consumer, creates snapshots on domain events
Legend
- ✅ Complete — API, admin, mobile, tests all done
- 🚧 In Progress — actively being built
- 📋 Designed — domain model ready, not implemented
- ⏳ Planned — scoped for a future phase