```plaintext %% User Registration and Approval Workflow (ADR-0029) %% Flowchart showing registration, approval, and access control flowchart TB subgraph registration["📝 Registration Flow"] direction TB request["👤 User Requests
Account"] form["📋 Enrollment
Form"] created["✅ Account
Created"] pending["⏳ pending-approval
Group"] end subgraph approval["✋ Admin Approval"] direction TB notify["📧 Admin
Notification"] review["👁️ Admin
Reviews"] decision{{"Decision"}} end subgraph groups["👥 Group Assignment"] direction LR reject["❌ Rejected"] guests["🎫 homelab-guests
Limited access"] users["👥 homelab-users
Full access"] admins["👑 homelab-admins
Admin access"] end subgraph access["🔓 Application Access"] direction TB subgraph admin_apps["Admin Apps"] authentik_admin["Authentik Admin"] gitea["Gitea"] flux_ui["Flux UI"] end subgraph user_apps["User Apps"] affine["Affine"] immich["Immich"] nextcloud["Nextcloud"] vaultwarden["Vaultwarden"] end subgraph guest_apps["Guest Apps"] kavita["Kavita"] end subgraph no_access["No Access"] profile["Authentik Profile
(only)"] end end %% Registration flow request --> form form --> created created --> pending pending --> notify %% Approval flow notify --> review review --> decision decision -->|"Reject"| reject decision -->|"Basic"| guests decision -->|"Full"| users decision -->|"Admin"| admins %% Access mapping reject --> profile guests --> guest_apps users --> user_apps users --> guest_apps admins --> admin_apps admins --> user_apps admins --> guest_apps classDef registration fill:#3498db,color:white classDef approval fill:#f39c12,color:black classDef group fill:#9b59b6,color:white classDef admin fill:#e74c3c,color:white classDef user fill:#27ae60,color:white classDef guest fill:#1abc9c,color:white classDef none fill:#95a5a6,color:white class request,form,created,pending registration class notify,review approval class reject,guests,users,admins group class authentik_admin,gitea,flux_ui admin class affine,immich,nextcloud,vaultwarden user class kavita guest class profile none ```