Container view — Architecture Overview
architecture-overview · hero
Component view — Invitation Landing & Acceptance
architecture-overview › invitation-acceptance-path
Component view — Encrypted SMTP Custody and Dispatch
architecture-overview › smtp-custody-dispatch
Creating, dispatching, and accepting an invitation
invitation-lifecycle
Data Model
data-model
CreateInvitationRequest → AdministrationVersionReceipt
AcceptInvitationRequest → InvitationAcceptanceResponse
frontend/apps/web/src/app/(studio)/studio/invitation-policy/page.tsx frontend/apps/web/src/app/(studio)/studio/invitations/page.tsx frontend/apps/web/src/components/auth/admin-invitations.tsx
frontend/apps/web/src/server/auth/invitation-session.ts frontend/apps/web/src/server/auth/native-invitation-client.ts
frontend/apps/web/src/server/auth/native-invitation-http.ts
frontend/packages/sdk/src/index.ts frontend/packages/sdk/src/invitation-entry-server.ts
backend/src/LearnStack.Api/Identity/InvitationEntryController.cs backend/src/LearnStack.Api/Identity/InvitationsController.cs backend/src/LearnStack.Api/Tenancy/InvitationPolicyController.cs
backend/src/LearnStack.Api/Authentication/CurrentInvitationRecipientReader.cs backend/src/LearnStack.Api/Authentication/InvitationEntrySource.cs
backend/src/LearnStack.Application/Authorization/OperationAuthorizationCoordinator.cs
backend/src/Modules/Identity/LearnStack.Modules.Identity.Application/Invitations/InvitationAdministrationHandlers.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Application/Invitations/InvitationEntryHandlers.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Domain/Invitation.cs
backend/src/Modules/Tenancy/LearnStack.Modules.Tenancy.Application/Settings/InvitationPolicyHandlers.cs
backend/src/LearnStack.Infrastructure/Email/InvitationSmtpDelivery.cs backend/src/LearnStack.Infrastructure/Email/Smtp/SmtpEmailProvider.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Infrastructure/Invitations/InvitationSmtpOperation.cs
backend/src/LearnStack.Infrastructure/Email/Smtp/SmtpEmailProvider.cs
backend/src/LearnStack.Infrastructure/Persistence/Migrations/20261104180000_add_invitation_smtp_custody.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Infrastructure/Persistence/Migrations/20261104150617_add_invitations.cs
frontend/apps/web/src/app/(studio)/studio/invitation-policy/page.tsx frontend/apps/web/src/app/(studio)/studio/invitations/page.tsx frontend/apps/web/src/components/auth/admin-invitations.tsx
frontend/apps/web/src/server/auth/invitation-session.ts frontend/apps/web/src/server/auth/native-invitation-client.ts
frontend/apps/web/src/server/auth/native-invitation-http.ts
frontend/packages/sdk/src/index.ts frontend/packages/sdk/src/invitation-entry-server.ts
backend/src/LearnStack.Api/Identity/InvitationEntryController.cs backend/src/LearnStack.Api/Identity/InvitationsController.cs backend/src/LearnStack.Api/Tenancy/InvitationPolicyController.cs
backend/src/LearnStack.Api/Authentication/CurrentInvitationRecipientReader.cs backend/src/LearnStack.Api/Authentication/InvitationEntrySource.cs
backend/src/LearnStack.Application/Authorization/OperationAuthorizationCoordinator.cs
backend/src/Modules/Identity/LearnStack.Modules.Identity.Application/Invitations/InvitationAdministrationHandlers.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Application/Invitations/InvitationEntryHandlers.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Domain/Invitation.cs
backend/src/Modules/Tenancy/LearnStack.Modules.Tenancy.Application/Settings/InvitationPolicyHandlers.cs
backend/src/LearnStack.Infrastructure/Email/InvitationSmtpDelivery.cs backend/src/LearnStack.Infrastructure/Email/Smtp/SmtpEmailProvider.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Infrastructure/Invitations/InvitationSmtpOperation.cs
backend/src/LearnStack.Infrastructure/Email/Smtp/SmtpEmailProvider.cs
backend/src/LearnStack.Infrastructure/Persistence/Migrations/20261104180000_add_invitation_smtp_custody.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Infrastructure/Persistence/Migrations/20261104150617_add_invitations.cs
backend/src/LearnStack.Api/Identity/InvitationEntryController.cs backend/src/LearnStack.Api/Identity/InvitationsController.cs backend/src/LearnStack.Api/Tenancy/InvitationPolicyController.cs
backend/src/LearnStack.Api/Authentication/CurrentInvitationRecipientReader.cs backend/src/LearnStack.Api/Authentication/InvitationEntrySource.cs
backend/src/LearnStack.Application/Authorization/OperationAuthorizationCoordinator.cs
backend/src/Modules/Identity/LearnStack.Modules.Identity.Application/Invitations/InvitationAdministrationHandlers.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Application/Invitations/InvitationEntryHandlers.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Domain/Invitation.cs
backend/src/Modules/Tenancy/LearnStack.Modules.Tenancy.Application/Settings/InvitationPolicyHandlers.cs
backend/src/LearnStack.Infrastructure/Email/InvitationSmtpDelivery.cs backend/src/LearnStack.Infrastructure/Email/Smtp/SmtpEmailProvider.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Infrastructure/Invitations/InvitationSmtpOperation.cs
backend/src/LearnStack.Infrastructure/Email/Smtp/SmtpEmailProvider.cs
backend/src/LearnStack.Infrastructure/Persistence/Migrations/20261104180000_add_invitation_smtp_custody.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Infrastructure/Persistence/Migrations/20261104150617_add_invitations.cs
frontend/apps/web/src/app/(studio)/studio/invitation-policy/page.tsx frontend/apps/web/src/app/(studio)/studio/invitations/page.tsx frontend/apps/web/src/components/auth/admin-invitations.tsx
frontend/apps/web/src/server/auth/native-invitation-http.ts
backend/src/LearnStack.Api/Identity/InvitationEntryController.cs backend/src/LearnStack.Api/Identity/InvitationsController.cs backend/src/LearnStack.Api/Tenancy/InvitationPolicyController.cs
backend/src/LearnStack.Api/Authentication/CurrentInvitationRecipientReader.cs backend/src/LearnStack.Api/Authentication/InvitationEntrySource.cs
backend/src/Modules/Identity/LearnStack.Modules.Identity.Application/Invitations/InvitationAdministrationHandlers.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Application/Invitations/InvitationEntryHandlers.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Domain/Invitation.cs
backend/src/LearnStack.Infrastructure/Email/InvitationSmtpDelivery.cs backend/src/LearnStack.Infrastructure/Email/Smtp/SmtpEmailProvider.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Infrastructure/Invitations/InvitationSmtpOperation.cs
backend/src/LearnStack.Infrastructure/Email/Smtp/SmtpEmailProvider.cs
backend/src/LearnStack.Infrastructure/Persistence/Migrations/20261104180000_add_invitation_smtp_custody.cs backend/src/Modules/Identity/LearnStack.Modules.Identity.Infrastructure/Persistence/Migrations/20261104150617_add_invitations.cs
backend/src/Modules/Identity/LearnStack.Modules.Identity.Infrastructure/Persistence/Migrations/20261104150617_add_invitations.cs
backend/src/LearnStack.Infrastructure/Persistence/InvitationSmtpStorageDdl.cs
backend/src/LearnStack.Infrastructure/Persistence/InvitationSmtpStorageDdl.cs
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
✦
/
What could this change break?
What should I review most carefully?
Drag to select a region · Space to pan · Drop a screenshot
↵
feat(identity): add verified invitations with automatic email
HodeTech/LearnStack #41
· 5 diagrams
Start the walkthrough
W
Fit the whole strip
1
Copy share link
Switch to light
Loading comments
Loading screenshots
How to move around
Ask about this canvas
/
Star
100%
Container view — Architecture Overview
Architecture
Component view — Invitation Landing & Acceptance
Architecture
Component view — Encrypted SMTP Custody and Dispatch
Architecture
Creating, dispatching, and accepting an invitation
Data flow
Data Model
Data model
Resume walkthrough
↵
This diagram has a walkthrough
scroll to move through it
swipe to move through it