{email.subject}
To: {email.to.join(", ")}
{link && Open message link}TrestleJS
React, TanStack, Better Auth, Hono, Drizzle, PostgreSQL, and Cloudflare—with the architectural boundaries already in place.
Account
{error}
}Local email capture
Verification, password-reset, and invitation messages appear here during local development.
{email.subject}
To: {email.to.join(", ")}
{link && Open message link}Account recovery
Account recovery
Organization invitation
{message}
}Loading your account…
; const createOrganization = async () => { setMessage(undefined); const slug = organizationName.toLowerCase().trim().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, ""); const result = await authClient.organization.create({ name: organizationName, slug }); setMessage(result.error ? result.error.message ?? "Could not create organization" : `Created ${organizationName}`); if (!result.error) setOrganizationName(""); }; returnProtected route
Signed in as {session.user.email}
{message}
}Settings
Loading…
: subscription.error ?{subscription.error.message}
: subscription.data?.subscription ?Current plan: {subscription.data.subscription.plan}
Status: {subscription.data.subscription.status}
{subscription.data.subscription.cancelAtPeriodEnd ? "Cancels at period end" : "Renews automatically"}
No active subscription.
}{message &&{message}
}