Feature Comparison: dracory/auth vs ZITADEL

Comparison of github.com/dracory/auth with ZITADEL, the Go-based identity infrastructure platform.

High-Level Differences

dracory/authZITADEL
TypeGo library embedded in your appIdentity platform (self-host or cloud)
Language fitGo, in-processGo-based but consumed via APIs
ScopePer-app auth flowsMulti-tenant IAM with organizations
DeploymentNo extra infrastructurePostgres + services (or cloud)

Feature Comparison

dracory/authZITADEL
Email/password✅✅
Otp (codes/links)✅✅ Passkeys + codes
Magic links✅✅
MFA / TOTP / WebAuthn❌✅ TOTP, WebAuthn/passkeys
OIDC / OAuth2 / SAML❌✅ All
Multi-tenancy / orgs❌✅ Organizations
Event-sourced audit❌✅ Event log + projections
Middleware✅ Web/API/optional✅ OIDC/SDK integration
Ops burden✅ None — it's a library❌ Significant (Postgres, services)
Multiple login methods simultaneously✅ Composable via NewMultiMethodAuth + types.Method (otp, magiclink, password, authknight, custom methods){mm}
Remember-me (extended sessions)✅ Built-in opt-in session extension{rm}

Legend: ✅ built-in · ⚠️ partial/conditional · ❌ not available

Branding & Layout Options

Aspectdracory/authZITADEL
Full layout control✅ FuncLayout wraps any page body in your own site shell (own <head>, nav, footer)⚠️ Hosted/self-hosted login UI; branding configurable, layout fixed
Theming / CSS✅ ThemeCSS (any hosted stylesheet / Bootlegance) + CustomCSS inline overrides✅ Per-org branding: logo, colors, light/dark; custom domain
Brand name / logo✅ BrandName, BrandTagline, BrandLogoURL rendered above the login card✅ Per-organization logo, colors, label policy
Email templates✅ Per-flow FuncEmailTemplate* callbacks — full control✅ Customizable texts per org

When to Choose ZITADEL

and an event-sourced audit trail in the Go ecosystem.

When to Choose dracory/auth

impersonation, your own stores — no platform to run.