wrongmove/crawler/services
Viktor Barzin a8b7eace48
Add passkey (WebAuthn) authentication with self-registration
Enable users to sign up and sign in using passkeys (biometrics/security
keys) without needing a manually-created Authentik account. The existing
SSO login remains as an alternative.

Backend:
- Add WebAuthn registration/authentication endpoints via py-webauthn
- Issue HS256 JWTs for passkey users, with Redis-backed challenge storage
- Dual JWT verification in auth middleware (issuer-based routing: passkey
  HS256 vs Authentik RS256)
- PasskeyCredential model + migration making user.password nullable
- UserRepository with full CRUD for users and credentials

Frontend:
- AuthUser type abstraction unifying OIDC and passkey users
- Passkey service using @simplewebauthn/browser for WebAuthn ceremonies
- LoginModal redesigned with Sign In / Sign Up tabs
- Type migration from oidc-client-ts User to AuthUser across all services
  and components
2026-02-07 00:34:47 +00:00
..
__init__.py Add services layer, tests, streaming UI, and cleanup legacy code 2026-02-06 20:55:10 +00:00
district_service.py Add services layer, tests, streaming UI, and cleanup legacy code 2026-02-06 20:55:10 +00:00
export_service.py Add services layer, tests, streaming UI, and cleanup legacy code 2026-02-06 20:55:10 +00:00
floorplan_detector.py Add services layer, tests, streaming UI, and cleanup legacy code 2026-02-06 20:55:10 +00:00
image_fetcher.py Add services layer, tests, streaming UI, and cleanup legacy code 2026-02-06 20:55:10 +00:00
listing_cache.py Remove 1000-result limit, add Redis caching and virtual scrolling 2026-02-06 20:47:36 +00:00
listing_fetcher.py Stream-process listings as IDs arrive via asyncio.Queue 2026-02-06 23:43:54 +00:00
listing_service.py Add services layer, tests, streaming UI, and cleanup legacy code 2026-02-06 20:55:10 +00:00
passkey_service.py Add passkey (WebAuthn) authentication with self-registration 2026-02-07 00:34:47 +00:00
query_splitter.py Add crawl job progress drawer with phase tracking and live logs 2026-02-06 22:37:53 +00:00
route_calculator.py Add services layer, tests, streaming UI, and cleanup legacy code 2026-02-06 20:55:10 +00:00
task_service.py Add services layer, tests, streaming UI, and cleanup legacy code 2026-02-06 20:55:10 +00:00