page.tsx78 lines · main
1import { DocsShell } from '../../../components/shell';
2
3export const metadata = { title: 'auth · SuperTokens parity walk' };
4
5type Row = { area: string; status: 'Y' | 'P' | 'N' | 'N/A'; note: string };
6
7const ROWS: Row[] = [
8 { area: 'Email password', status: 'Y', note: 'FDI signin/signup' },
9 { area: 'Passwordless email OTP / magic link', status: 'Y', note: 'Phase 3 live' },
10 { area: 'Passwordless SMS', status: 'P', note: 'UI ready; Twilio human prove' },
11 { area: 'Third-party social', status: 'Y', note: 'Full catalog when secrets set' },
12 { area: 'WebAuthn / passkeys', status: 'Y', note: 'Phase 5' },
13 { area: 'TOTP MFA', status: 'Y', note: 'Phase 5' },
14 { area: 'Session recipe', status: 'Y', note: 'Doltgres sessions' },
15 { area: 'User roles', status: 'Y', note: 'Phase 6' },
16 { area: 'Multitenancy (project→tenant)', status: 'Y', note: 'Path A map' },
17 { area: 'Enterprise SAML SSO (SP)', status: 'Y', note: 'briven-engine native' },
18 { area: 'Enterprise OIDC SSO (SP)', status: 'Y', note: 'briven-engine native' },
19 { area: 'OAuth2/OIDC provider (IdP)', status: 'Y', note: 'authorize/token/userinfo/… + live proof script' },
20 { area: 'M2M client credentials', status: 'Y', note: 'Keys → machine clients' },
21 { area: 'User migration / import', status: 'Y', note: 'plaintext + bcrypt/argon2 hash import' },
22 { area: 'Dashboard (operator)', status: 'Y', note: 'yellow Auth tabs' },
23 { area: 'Security audit trail', status: 'Y', note: 'Security diary' },
24 { area: 'Captcha', status: 'P', note: 'Turnstile when configured' },
25 { area: 'Branding', status: 'Y', note: 'logo/color/sender/footer + email HTML' },
26 { area: 'AI authentication', status: 'Y', note: 'AI agent tokens brai_…' },
27 { area: 'Framework integration pack', status: 'Y', note: 'docs/auth/frameworks' },
28 { area: 'SuperTokens Core Docker', status: 'N/A', note: 'Doltgres path; Core removed' },
29 { area: 'Full 492-URL line-by-line', status: 'P', note: 'covered by this parity matrix + plan; open rows above' },
30 { area: 'Claim 100% ST surface', status: 'P', note: 'SMS live prove still open' },
31];
32
33export default function AuthParityPage() {
34 return (
35 <DocsShell>
36 <h1 className="font-mono text-2xl tracking-tight">SuperTokens parity walk</h1>
37 <p className="mt-2 font-mono text-sm text-[var(--color-text-muted)]">
38 SuperTokens docs are a <strong className="text-[var(--color-text)]">checklist</strong>, not
39 a dependency. Status: <strong className="text-[var(--color-text)]">Y</strong> done ·{' '}
40 <strong className="text-[var(--color-text)]">P</strong> partial ·{' '}
41 <strong className="text-[var(--color-text)]">N</strong> not yet ·{' '}
42 <strong className="text-[var(--color-text)]">N/A</strong> won&apos;t do.
43 </p>
44
45 <div className="mt-8 overflow-x-auto">
46 <table className="w-full min-w-[32rem] border-collapse font-mono text-xs">
47 <thead>
48 <tr className="border-b border-[var(--color-border-subtle)] text-left text-[var(--color-text-muted)]">
49 <th className="py-2 pr-3 font-medium">Area</th>
50 <th className="py-2 pr-3 font-medium">Status</th>
51 <th className="py-2 font-medium">Notes</th>
52 </tr>
53 </thead>
54 <tbody>
55 {ROWS.map((r) => (
56 <tr
57 key={r.area}
58 className="border-b border-[var(--color-border-subtle)] text-[var(--color-text)]"
59 >
60 <td className="py-2 pr-3 align-top">{r.area}</td>
61 <td className="py-2 pr-3 align-top font-semibold">{r.status}</td>
62 <td className="py-2 align-top text-[var(--color-text-muted)]">{r.note}</td>
63 </tr>
64 ))}
65 </tbody>
66 </table>
67 </div>
68
69 <p className="mt-8 font-mono text-xs text-[var(--color-text-muted)]">
70 Related:{' '}
71 <a className="underline" href="/auth/frameworks">
72 framework packs
73 </a>{' '}
74 · IdP proof script <code className="text-[var(--color-text)]">scripts/idp-live-proof.ts</code>
75 </p>
76 </DocsShell>
77 );
78}