Commit graph

25 commits

Author SHA1 Message Date
Viktor Barzin
eafbc1ac52
Flatten repo structure: move crawler/ to root, remove vqa/ and immoweb/
The crawler subdirectory was the only active project. Moving it to the
repo root simplifies paths and removes the unnecessary nesting. The
vqa/ and immoweb/ directories were legacy/unused and have been removed.

Updated .drone.yml, .gitignore, .claude/ docs, and skills to reflect
the new flat structure.
2026-02-07 23:01:20 +00:00
Viktor Barzin
e2247be700
Apply Color By metric change instantly without data re-fetch
The metric dropdown only updated form state, requiring "Apply Filters"
to take effect — which re-fetched identical data and remounted the Map,
making the result look unchanged. Now the Select's onValueChange
immediately propagates the metric to queryParameters, so the Map
re-renders in-place with the new color scheme, legend, and hex values.
2026-02-07 22:47:13 +00:00
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
Viktor Barzin
5514fa6381 Remove 1000-result limit, add Redis caching and virtual scrolling
- Remove hard-coded limit=1000 default from listing_geojson and streaming
  endpoints, allowing all matching results to be returned
- Add Redis caching service (db=2, 30min TTL) that caches query results
  as Redis Lists for fast re-queries with reduced DB load
- Integrate cache into streaming endpoint: serve from cache on hit,
  populate cache on miss during DB streaming
- Invalidate cache after scrape completes (both success and no-new-listings)
- Replace ScrollArea with react-virtuoso in ListView for virtual scrolling,
  keeping only ~20-30 DOM nodes regardless of list size
- Handle metadata streaming message to show "0 / N" progress from start
- Throttle frontend state updates with requestAnimationFrame to prevent
  UI jank from rapid re-renders during cached response streaming
2026-02-06 20:47:36 +00:00
Viktor Barzin
29ba739063
Improve login UI with error handling and callback page 2026-02-02 20:33:40 +00:00
Viktor Barzin
c7ac448f15 Add configurable scheduling, UI health/task indicators, and auto-load map with default filters 2026-02-01 17:28:37 +00:00
Viktor Barzin
d4b22deda0
save user queries in redis so that user can refresh the page and still come back to their latest task 2025-07-06 12:02:25 +00:00
Viktor Barzin
7c43907c2f
welcome email as not all users have given names 2025-07-01 16:28:56 +00:00
Viktor Barzin
8ab79b7c72
squash parametrs form to take less space 2025-06-23 21:16:07 +00:00
Viktor Barzin
9a164ddfdc
migrate frontend to use new celery api and improve ux around spinners whilst loading 2025-06-22 21:32:46 +00:00
Viktor Barzin
ce199152e2
add available from filter 2025-06-21 23:22:11 +00:00
Viktor Barzin
170ab33eee
add ts ignore for errors 2025-06-21 18:51:06 +00:00
Viktor Barzin
8d32c2cbd7
add filter for last seen days 2025-06-21 17:39:10 +00:00
Viktor Barzin
b1cbe8505a
handle errors better in the ui with an alert component 2025-06-21 17:26:45 +00:00
Viktor Barzin
a7e0773c0a
add worker api to refresh data in the background 2025-06-21 12:49:04 +00:00
Viktor Barzin
3e1be6750c
add filter for sqm 2025-06-18 21:06:02 +00:00
Viktor Barzin
70460bee5d
add filter for min and max price 2025-06-18 20:57:20 +00:00
Viktor Barzin
dadb56aa16
add filter for min and max number of bedrooms 2025-06-18 20:54:47 +00:00
Viktor Barzin
69d15e9a16
add support for querying buying listings as well as by max price 2025-06-18 20:38:50 +00:00
Viktor Barzin
7c70da4bed hook up query parameters form with rest query 2025-06-18 18:56:11 +00:00
Viktor Barzin
10a997a8a1
make oauth redirect url depends on env mode 2025-06-16 22:42:06 +00:00
Viktor Barzin
8e41032c6c
setup map component to render correctly and visualize all listings in scrollable components 2025-06-15 21:06:10 +00:00
Viktor Barzin
a8ee95b9d9
install shadcdn and move login dialog to a separate component 2025-06-15 13:49:34 +00:00
Viktor Barzin
4c7fe8927b
add minimal working version where we fetch data and visualize it corectly 2025-06-15 12:48:52 +00:00
Viktor Barzin
c7d996dbeb
rename frontend directory to frontend 2025-06-14 15:43:14 +00:00
Renamed from crawler/wrongmove/src/App.tsx (Browse further)