Backend — Core
16/21 (76%)Core/Platform
7/8- ✓ AbstractId base class
- ✓ Timestamps value object
- ✓ DomainEventInterface contract
- ✓ TenantId shared value object
- ✓ FileStorageServiceInterface + Flysystem adapter
- ✓ OrganizationContextResolverInterface
- ✓ OrgMembershipCheckInterface
- ○ Module entitlement contracts
Core/Identity
9/13- ✓ Tenant aggregate (create, status, type, locale, slug)
- ✓ User aggregate (OIDC, profile, invite, status, roles)
- ✓ ApiKey aggregate
- ✓ Zitadel OIDC bearer authenticator
- ✓ Zitadel OIDC session authenticator
- ✓ API key authenticator
- ✓ X-Organization-Id context resolution
- ✓ SecurityUser with tenantId + organizationId
- ✓ Admin UI (tenants, users, API keys)
- ○ Passkey support via Zitadel
- ○ Mailgun transactional email integration
- ○ Password reset flow via Zitadel + Mailgun
- ○ Email verification flow
Backend — Modules
16/39 (41%)Module/Organization
7/10- ✓ Organization aggregate (create, update, archive, ltree)
- ✓ OrgMembership aggregate (join, leave, roles)
- ✓ OrgAuthorizationChecker (ltree cascading)
- ✓ RootOrganizationProvisioner
- ✓ Org context resolver + membership check
- ✓ Admin UI + API controllers
- ✓ registrationMode per org (open, invite_only, by_request)
- ○ OrgInvitation entity + invite/accept endpoints
- ○ Leave org endpoint + auto-remove group memberships
- ○ GET /api/v1/me/organizations (cross-tenant org list)
Module/Groups
4/6- ✓ Group aggregate (create, update, delete, archive, hierarchy)
- ✓ GroupMembership aggregate (add, remove, roles)
- ✓ Org-scoped repos and queries
- ✓ Admin UI + API controllers
- ○ Group visibility (open, request, invite-only)
- ○ Group type filtering
Module/Events
5/8- ✓ Event aggregate (create, update, publish, cancel)
- ✓ EventRegistration aggregate (register, cancel)
- ✓ Timezone + RecurrenceRule value objects
- ✓ Org-scoped repos and queries
- ✓ Admin UI + API controllers
- ○ Event ↔ Group relationship
- ○ Calendar export (iCal)
- ○ RSVP Level 2 (capacity, waitlist)
Module/People
0/4- ○ People profile (name, photo, bio, contact)
- ○ Privacy settings (who sees what)
- ○ Searchable member directory (org-scoped)
- ○ Contact actions (email, phone)
Module/News
0/5- ○ News post aggregate (create, edit, delete, schedule)
- ○ Multi-level feed (org-scoped, cascading)
- ○ Rich text with images
- ○ Post targeting (all / org / group)
- ○ Admin UI + API controllers
Push Notifications
0/6- ○ Firebase FCM integration (Android)
- ○ APNs integration (iOS)
- ○ Web push (service worker)
- ○ Notification types (news, event, group)
- ○ Member preferences (per-type toggle)
- ○ Deep link from notification to screen
Backend — Pipeline
6/6 (100%)Pipeline/Audit
4/4- ✓ AuditEntry entity
- ✓ AuditEventHandler (Messenger async)
- ✓ Audit log query
- ✓ Superadmin UI
Pipeline/History
2/2- ✓ EntitySnapshot entity
- ✓ HistoryEventHandler (versioned snapshots)
Frontend (React Native / Expo)
5/15 (33%)Foundation
5/8- ✓ Expo project with Expo Router
- ✓ Design system tokens (theme.ts)
- ✓ UI component library (Button, Input, Card, etc.)
- ✓ Design system showcase page
- ✓ 4-tab navigation shell
- ○ Auth flow (OIDC → Zitadel)
- ○ API client + token management
- ○ Org context provider
Screens
0/7- ○ Org picker / switcher
- ○ Feed screen (news, pull-to-refresh)
- ○ Groups screens (my groups, discovery, detail)
- ○ Events screens (upcoming, detail, RSVP)
- ○ Directory screens (search, profile view)
- ○ Profile screens (edit, privacy, notifications)
- ○ Settings (language toggle DE/EN)
Org Access Flows
2/6 (33%)Org Access
2/6- ✓ Open join — auto-membership on first API call
- ✓ registrationMode per org
- ○ Org switching (GET /me/organizations + org picker)
- ○ Invite-only join (admin sends invite → member accepts)
- ○ Leave org (member can leave, auto-removes memberships)
- ○ Invite link / QR code generation
Infrastructure
8/18 (44%)Local Development
5/5- ✓ Docker Compose (PostgreSQL, Redis, Zitadel, MinIO, Mailpit)
- ✓ Zitadel OIDC setup script
- ✓ make setup / make serve / make worker
- ✓ Seed command (sample data)
- ✓ Subdomain testing via lvh.me
CI/CD
0/4- ○ PHPStan + Deptrac + PHPUnit pipeline
- ○ ESLint + TypeScript check
- ○ Staging auto-deploy on merge to main
- ○ Production deploy on tag
Hosting
0/4- ○ Hetzner servers via OpenTofu
- ○ Cloudflare R2 + CDN
- ○ Cloudflare Pages (PWA hosting)
- ○ Zitadel production deployment
Quality
3/5- ✓ Deptrac boundary enforcement (0 violations)
- ✓ 96 unit tests, 285 assertions
- ✓ Domain event JSON serialization
- ○ OpenAPI documentation
- ○ Integration tests for infrastructure layer
Admin Backend
6/11 (55%)Tenant Admin
6/11- ✓ Super admin dashboard (tenant list)
- ✓ User management (list, search, roles)
- ✓ Audit log viewer
- ✓ Organization tree management
- ✓ Group management
- ✓ Event management
- ○ Self-service tenant creation wizard
- ○ Member invite (link, QR, email)
- ○ News content management
- ○ Basic dashboard (member count, activity)
- ○ Conflict detection (duplicate tenants)