Customizable login pages for Hanzo IAM. Fork this repo to create fully branded authentication pages for your organization.
- Fully customizable - Complete control over look/feel, colors, logos
- Multi-organization - Configure multiple orgs in one deployment
- OAuth/OIDC - Uses Hanzo IAM SDK for secure authentication
- Static export - Deploy to Cloudflare Pages, Vercel, or any static host
- Bank-grade UX - Clean, professional, minimal design
# Install dependencies
pnpm install
# Start development server
pnpm dev
# Build for production
pnpm buildEdit config/organizations.ts to customize your organization:
export const myorg: OrgConfig = {
id: 'myorg',
name: 'myorg',
displayName: 'My Organization',
// IAM connection
iamUrl: 'https://iam.hanzo.ai',
clientId: 'myorg-client-id',
// Branding
logo: '/logos/myorg.svg',
favicon: '/favicons/myorg.svg',
// Theme - all colors customizable
theme: {
background: '#050508',
surface: '#0c0c10',
primary: '#ffffff',
primaryHover: '#e5e5e5',
text: '#ffffff',
textMuted: '#666666',
border: '#222222',
borderFocus: '#444444',
},
// Features
enableSignup: true,
enablePasswordLogin: true,
enableCodeLogin: true,
enableWebAuthn: true,
enableFaceId: false,
// URLs
homepageUrl: 'https://myorg.com',
}- Connect repo to Cloudflare Pages
- Build command:
pnpm build - Output directory:
out
Point your Worker to the Pages deployment:
// In your Worker
const LOGIN_ORIGIN = 'https://your-login.pages.dev';
if (pathname === '/login') {
return fetch(`${LOGIN_ORIGIN}/login`, request);
}Pre-configured organizations:
- Hanzo (
hanzo.id) - Default - Lux (
lux.id) - Blockchain identity - Pars (
pars.id) - Persian global network
- Add config in
config/organizations.ts - Add logo to
public/logos/ - Add favicon to
public/favicons/ - Update
getOrgByHost()for domain routing
MIT