| .github/workflows | ||
| .vscode | ||
| analyses | ||
| frontend | ||
| manual-data | ||
| og-screenshot | ||
| pipeline | ||
| server-rs | ||
| .dockerignore | ||
| .gitignore | ||
| .python-version | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| image.png | ||
| pyproject.toml | ||
| README.md | ||
| Taskfile.data.yml | ||
| Taskfile.yml | ||
| uv.lock | ||
Property Map
Dev setup
curl -1sLf 'https://dl.cloudsmith.io/public/task/task/setup.deb.sh' | sudo -E bash
apt install task
task prepare
Area
- ambiance
- nature / greenery within 5 mins walk
- current listings
mkdir -p data/crime unzip data/d29f0314840ef7dcbb5cde66e383fe08059dab5a.zip -d data/crime/ rm data/d29f0314840ef7dcbb5cde66e383fe08059dab5a.zip
https://xploria.co.uk/data-sources/
epc oopt out https://www.gov.uk/guidance/energy-performance-certificates-opt-out-of-public-disclosure
You may buy a box of cereal you’ve never tried because it’s 20% off. Your future home is not a box of cereal. Don’t let a seemingly good deal that just popped up turn into life-long regret because you got a discount but not on the home you needed. We help you reverse the equation and allow you to be intentional in your search. Don’t wait for good deals to come your way, if you can go out and find them yourself.
You can’t get a complete picture of the property market by looking at current listings. To understand the landscape, you have to look at historical trends.
We give you the tools to be intentional about the trade-offs you make in one of the most important decisions of your life.
Don’t let the market sway you, anchor your expectations based on the choices millions of other buyers who’ve been in the same situation as you are now.
There are too few properties listed at any time to give you a full and nuanced picture of the entire property landscape but there’re too many to go through one by one and evaluate them all.
We all care about different things in our homes and living environments. Some of us are weary of noise and would like to avoid living next to a loud airfield as much as possible. And some of us are avid plane spotters.
Only you know your preferences. We will give you all the data that exists, aggregated into dozens of personalised sliders for you to compile the list of perfect postcodes.
We will help you find the best places to live within your budget regardless if there’s a property listed there right now. The best things come to those who’re patient. We will justify your patience. But we will also show you if your expectations are impossible to meet. I’d much rather be told upfront then spend months of my life looking for something that can’t possibly exist.
We give you all the data and tools to become an Well-informed Buyer through the click of a button.
[button]
-
scraping
-
fix frontend
- price history
- map hexagons
- dragging
-
account management
-
stripe
-
saved views
-
update texts
-
friendlier filtering
-
fix plausible
-
move data to raid
-
loading animation on right pane
-
extract all user-facing texts into a yaml file for easy editing
-
register domain
-
register for email
FAQ:
-
Why hexagons?
-
Why the price tag?
-
contact support
## outstadning prompts
Ensure the website is dynamically scalable and looks great on mobiles. The home/data sources/faq pages should be easy, just ensure responsive scaling. For the dashboard, we need a different layout. Split the screen vertically into 60:40. The top half is the map while the bottom is the filter section. Add a menu drawer on the right hand side where the area/properties/poi tabs will live. When the user clicks on a hexagon, the drawer appears covering 90% of the screen. Theres a large X button to dismiss it but clicking outside works too.
Look at the frontend. Once you're logged in, you can save your searches and then look at your saved searches. Add a save search button for logged in users in the header. Also add a saved searches page which shows you the time of saving, the filters selected and a screenshot of the map. Use a similar approach we use to generate og images.
Add licensing to the app. By default, anonymous users can use the map but only in central london. if they try zooming out, the server refuses to provide data and the users will be prompted to buy a lifetime license to continue (or zoom back in). Just before buying a license, they have to register by providing their email address and password, then they need to complete the stripe check out workflow. Implement the full pocketbase/server/frontend integration. For admins, give an option to generate an invite link, opening which prompts you to register and gives you a free license forever. Have a cool animation with party poppers on the successful acquiring of a license. For non-admin users, allow inviting friends for 30% off the price. Also add a support page that shows my email address, and add a FAQ on the same page too. While doing this, protect the server against DOS-ing.
-
put price history under property and on the top of the tab add a description for the histograms
-
Can we embedd google street view in an iframe? If so, add it underneath the area page
-
You can reach out to ollama at http://ollama:11434/v1. Add a server endpoint that takes the selected filters and results of them shown on the frontend and generates a brief description of the area using qwen3:14b. Make sure that loading the llm summary doesn't block showing anything on the screen and instead add a placeholder animation in the Area tab where this functionality belongs.
-
Ensure that the Area & Properties tabs have a loading animation when waiting for data to be fetched
-
Add a forgot password workflow for the login page relying on pocketbase
-
Make sure the frontend asks for 25% more area than what the user sees on their viewport when fetching hexagons and postcodes to ensure a smoother panning experience.
-
The area tab is suppoed to show links to zoopla, rightmove, etc. but it doesn't. Investigate the issue
-
The colours of the log in popup are not consistent with the rest of the website, fix it.
-
Show a register button in the header too and make it green like the other buttons
-
Don't support profile pictures or full names to avoid GDPR requirements.
-
the min: number; max: number; p1: number; p99: number; counts: number[] histogram schema doesn't make sense. Have on the min max, width and counts in the schema but ensure min corresponds with the center of the bin and max with the center of the last bin
-
move the FEATURE_FORMATS definition to the backend's features.rs
wide = wide.with_columns( ( pl.col("date_of_transfer").dt.year() + (pl.col("date_of_transfer").dt.month() - 1) / 12 ) .cast(pl.Float32) .alias("transaction_year"), )
is ugly, just put the actual datetime inside the parquet and call the column date of last transaction
-
make the text on the map white when in dark mode
-
move download_map_assets.py into the download module where all the other downloads live. Also, try to find a different way of downloading all icons without hardcoding them