RevIQ 073db98a91 Implement Workstream H: Auth pages with refactored components
Add 10 authentication pages for the Publisher Dashboard:
- H1: /auth/signup - Account creation with passkey/password
- H2: /auth/setup/user - Profile setup with phone validation
- H3: /auth/login - Email entry with routing logic
- H4: /auth/login/passkey - WebAuthn authentication
- H5: /auth/login/password - Password authentication
- H6: /auth/confirm - Email verification polling
- H7: /auth/trust-device - Device trust prompt
- H8: /auth/verify - Email verification callback
- H9: /auth/forgot-password - Password reset request
- H10: /auth/reset-password - New password form

New reusable components:
- LoadingButton: Button with Loader2 spinner and loading state
- ErrorAlert: Accessible error display with ARIA live region
- PasswordFormField: Composite field with label, input, strength meter
- PasswordInput: Improved with bind:value and cn() class merging

New utilities:
- validation.ts: Email, phone validation, email masking, error parsing
- auth.svelte.ts: Login flow state store for SPA mode guards

Backend updates:
- Implement me.get, me.setupProfile, me.getDeviceInfo, me.trustDevice

Dependencies added:
- @simplewebauthn/browser, libphonenumber-js, ua-parser-js
- zxcvbn, svelte-sonner, shadcn alert component

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 16:32:35 +08:00
2026-01-09 12:37:17 +08:00
2026-01-09 12:37:17 +08:00

Reviq Publisher Dashboard

Setup

Prerequisites

  • devenv for development environment management

Environment Variables

Copy .env.dev to .env for local development:

cp .env.dev .env
Variable Description
DATABASE_URL PostgreSQL connection string

Development

Start the development environment:

devenv up

This starts:

  • PostgreSQL database
  • Publisher dashboard dev server (port 6827)
  • Package build watcher

The database is automatically initialized with:

  • Database: reviq-dashboard
  • User: reviq
  • Password: reviq
Description
No description provided
Readme 964 KiB
Languages
TypeScript 63.4%
Svelte 35.1%
CSS 0.7%
JavaScript 0.4%
Nix 0.3%