Web frontend for Ham (WHU) — an SSO + academic toolkit companion to the Ham mobile app.
🚧 Still work in progress.
User documentation: https://docs.ham.nowcent.cn
- Framework: Next.js 16 (App Router) + React 19 + TypeScript
- Styling: Tailwind CSS v4 + HeroUI v3
- State: Jotai
- i18n:
next-intlwith catalogues undermessages/(zh/en/ja) - Tooling: ESLint v9 (flat config), Prettier, pnpm
Requires Node.js 20+ and pnpm.
# Install dependencies
pnpm install
# Start the dev server (Turbopack)
pnpm dev
# Production build
pnpm build
pnpm start
# Cloudflare Pages build
pnpm build:cf
# Lint
pnpm lint
pnpm lint:fix # auto-fix what can be fixed
# Formatting
pnpm format # write
pnpm format:check # verify
# Type checking
pnpm typecheck # app + e2e
# Unit tests (Vitest)
pnpm test
# End-to-end tests (Playwright)
pnpm test:e2eDev server runs at http://localhost:3000.
- SSO authorisation flow (consent view, QR login, deep-link to native app)
- Passkey (WebAuthn) login
- Mobile app login (deep-link → OAuth2 code callback)
- API key management (create, rotate, revoke)
- SSR auth guard (
requireAuth) with redirect-back support - Dark / light / system theme switcher
- Multi-language UI (
zh/en/ja) with cookie persistence - Mobile H5 fallback (install prompt + Passkey option)
- Third-party login
- Course grade lookup
- Course detail lookup
- Course selection panel
See CONTRIBUTING.md.
ham-web is MIT licensed.