feat: house tracker with home worker, alerts and listing map
Collects Pararius rent/buy listings into Postgres via a worker that runs on a residential connection, sends Discord/ntfy alerts for new listings matching rules, and shows an admin-only map, market stats and worker log. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013HfF5tnChi8tkCx9svJP6D
This commit is contained in:
467
src/lib/house-tracker/fixtures/pararius-detail-apartment.html
Normal file
467
src/lib/house-tracker/fixtures/pararius-detail-apartment.html
Normal file
File diff suppressed because one or more lines are too long
304
src/lib/house-tracker/fixtures/pararius-detail-house.html
Normal file
304
src/lib/house-tracker/fixtures/pararius-detail-house.html
Normal file
File diff suppressed because one or more lines are too long
391
src/lib/house-tracker/fixtures/pararius-detail-on-request.html
Normal file
391
src/lib/house-tracker/fixtures/pararius-detail-on-request.html
Normal file
File diff suppressed because one or more lines are too long
107
src/lib/house-tracker/fixtures/pararius-search-synthetic.html
Normal file
107
src/lib/house-tracker/fixtures/pararius-search-synthetic.html
Normal file
@@ -0,0 +1,107 @@
|
||||
<!doctype html>
|
||||
<!-- Hand-written in the shape of Pararius search results. Replace with a real saved page. -->
|
||||
<html>
|
||||
<head>
|
||||
<title>Huurwoningen Gouda</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="search-list-header__count">12</div>
|
||||
<ul class="search-list">
|
||||
<li class="search-list__item search-list__item--listing">
|
||||
<section
|
||||
class="listing-search-item listing-search-item--list listing-search-item--for-rent"
|
||||
>
|
||||
<div class="listing-search-item__depiction">
|
||||
<a
|
||||
class="listing-search-item__link listing-search-item__link--depiction"
|
||||
href="/appartement-te-huur/gouda/d5d8a72c/raam"
|
||||
>
|
||||
<img
|
||||
src="https://casco-media-prod.global.ssl.fastly.net/listings/example-raam.jpg?width=300"
|
||||
alt=""
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="listing-search-item__label">
|
||||
<span class="listing-label listing-label--new">Nieuw</span>
|
||||
</div>
|
||||
<h2 class="listing-search-item__title">
|
||||
<a
|
||||
class="listing-search-item__link listing-search-item__link--title"
|
||||
href="/appartement-te-huur/gouda/d5d8a72c/raam"
|
||||
>
|
||||
Appartement Raam
|
||||
</a>
|
||||
</h2>
|
||||
<div class="listing-search-item__sub-title'">2801 VN Gouda (Binnenstad)</div>
|
||||
<div class="listing-search-item__price">€ 1.475 per maand</div>
|
||||
<div class="listing-search-item__features">
|
||||
<ul class="illustrated-features illustrated-features--compact">
|
||||
<li class="illustrated-features__item illustrated-features__item--surface-area">
|
||||
58 m²
|
||||
</li>
|
||||
<li class="illustrated-features__item illustrated-features__item--number-of-rooms">
|
||||
3 kamers
|
||||
</li>
|
||||
<li class="illustrated-features__item illustrated-features__item--interior">
|
||||
Gestoffeerd
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="listing-search-item__info">
|
||||
<a class="listing-search-item__link" href="/makelaars/gouda/example"
|
||||
>Voorbeeld Makelaardij</a
|
||||
>
|
||||
</div>
|
||||
</section>
|
||||
</li>
|
||||
<li class="search-list__item search-list__item--listing">
|
||||
<section
|
||||
class="listing-search-item listing-search-item--list listing-search-item--for-rent"
|
||||
>
|
||||
<h2 class="listing-search-item__title">
|
||||
<a
|
||||
class="listing-search-item__link listing-search-item__link--title"
|
||||
href="/huis-te-huur/gouda/8f976237/kongsbergstraat"
|
||||
>
|
||||
Huis Kongsbergstraat 45
|
||||
</a>
|
||||
</h2>
|
||||
<div class="listing-search-item__sub-title'">2804 XV Gouda (De Mammoet)</div>
|
||||
<div class="listing-search-item__price">€1,600 per month</div>
|
||||
<ul class="illustrated-features">
|
||||
<li class="illustrated-features__item illustrated-features__item--surface-area">
|
||||
113 m²
|
||||
</li>
|
||||
<li class="illustrated-features__item illustrated-features__item--number-of-rooms">
|
||||
5 rooms
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</li>
|
||||
<li class="search-list__item search-list__item--listing">
|
||||
<section
|
||||
class="listing-search-item listing-search-item--list listing-search-item--for-rent"
|
||||
>
|
||||
<h2 class="listing-search-item__title">
|
||||
<a
|
||||
class="listing-search-item__link listing-search-item__link--title"
|
||||
href="/huis-te-huur/gouda/8fc6ae25/nansenstraat"
|
||||
>
|
||||
Huis Nansenstraat
|
||||
</a>
|
||||
</h2>
|
||||
<div class="listing-search-item__sub-title'">2806 HK Gouda (Vreewijk)</div>
|
||||
<div class="listing-search-item__price">Prijs op aanvraag</div>
|
||||
</section>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="pagination__list">
|
||||
<li class="pagination__item pagination__item--next">
|
||||
<a class="pagination__link pagination__link--next" href="/huurwoningen/gouda/page-2"
|
||||
>Volgende</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user