Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
80c8e26
docs: add developer portal design document
zenabot27 Feb 27, 2026
9991461
docs: add developer portal implementation plan
zenabot27 Feb 27, 2026
dd8861b
feat(developer): add shadcn UI components for developer portal
zenabot27 Feb 27, 2026
87094c5
feat(developer): add AuthContext and webhook API client
zenabot27 Feb 27, 2026
89b325c
feat(developer): add login, callback, layout, dashboard pages and Aut…
zenabot27 Feb 27, 2026
a2db13e
feat(developer): add API keys management page
zenabot27 Feb 27, 2026
d669e8f
feat(developer): add webhook endpoints management page
zenabot27 Feb 27, 2026
b5e6c82
feat(developer): add subscriptions management page
zenabot27 Feb 27, 2026
0f9c89c
feat(developer): add delivery logs page
zenabot27 Feb 27, 2026
7e46619
feat(developer): add developer portal link to sidebar
zenabot27 Feb 27, 2026
6cf4977
feat(developer): configure GoTrue SMTP for magic link emails
zenabot27 Feb 27, 2026
0832c77
feat(developer): add custom email templates for GoTrue
zenabot27 Feb 27, 2026
c408dc8
feat: add BIMI SVG logo for email branding
zenabot27 Feb 27, 2026
369a181
fix(email): dark theme, OTP code, text-only logo
zenabot27 Feb 27, 2026
6afea8b
fix(email): force dark background for Gmail compatibility
zenabot27 Feb 27, 2026
a59f75f
feat: default login to magic link + OTP, remove password auth
zenabot27 Feb 28, 2026
b28f3fe
feat: add disabled wallet login button with Coming Soon badge
zenabot27 Feb 28, 2026
aa44f6c
merge: resolve conflicts with main, keep magic link + OTP login
zenabot27 Feb 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions frontend/app/contexts/AuthContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ interface AuthContextValue extends AuthState {
signUp: (email: string, password: string) => Promise<void>;
signIn: (email: string, password: string) => Promise<void>;
sendMagicLink: (email: string) => Promise<void>;
verifyOtp: (email: string, token: string) => Promise<void>;
handleCallback: (hash: string) => void;
signOut: () => void;
}
Expand Down Expand Up @@ -231,6 +232,14 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
await gotruePost('/magiclink', { email });
}, []);

const verifyOtp = useCallback(
async (email: string, token: string) => {
const data = await gotruePost('/verify', { type: 'magiclink', token, redirect_to: '', email });
applyTokenResponse(data);
},
[applyTokenResponse],
);

const handleCallback = useCallback(
(hash: string) => {
const params = new URLSearchParams(hash.replace(/^#/, ''));
Expand All @@ -257,6 +266,7 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
signUp,
signIn,
sendMagicLink,
verifyOtp,
handleCallback,
signOut,
}}
Expand Down
Loading
Loading