CasaTrova is a coastal-property search portal built as a React + Vite single-page app: an interactive Leaflet map, precise geolocation, advanced filters, favourites, and a photo gallery for each property. It uses OpenStreetMap tiles and the Nominatim geocoder — no API key and no backend required.
The portal covers only these coastal areas (nothing else):
| Zone | Region | Currency |
|---|---|---|
| Burtonport / The Rosses | Co. Donegal, Ireland | € EUR |
| North Berwick (& Gullane, Dirleton) | East Lothian, Scotland | £ GBP |
| Rosemarkie / Fortrose | Black Isle, Highland, Scotland | £ GBP |
| East Neuk of Fife (Anstruther, Crail, Pittenweem, St Monans, Elie) | Fife, Scotland | £ GBP |
Listings are refreshed every day by a scheduled agent that searches these
four areas and commits the new data to src/data.js (updating LAST_UPDATED).
The push triggers the Pages workflow, so the live site always reflects the
latest run. See docs/daily-agent.md for the agent's
brief and how to change/pause it.
- React 18 + Vite 5 (build tooling)
- Leaflet via react-leaflet for the interactive map
- OpenStreetMap tiles + Nominatim geocoding, Esri World Imagery for the satellite view
- Listing sources: Rightmove, OnTheMarket, s1homes, ESPC, ASPC (Scotland), MyHome.ie (Ireland). TSPC was retired in Sept 2026 (blocks scripted requests).
index.html # Vite entry
src/
main.jsx # React bootstrap
App.jsx # State + filtering logic
data.js # Demo listings (real coordinates)
utils.js # Formatting, distance, geocoding helpers
index.css # Styles
components/
Header.jsx # Search (autocomplete) + "near me"
Filters.jsx # Filter bar + advanced drawer
ListPanel.jsx # Results panel
Card.jsx # Listing card
MapPanel.jsx # Leaflet map + price-pin markers
DetailModal.jsx # Property detail + gallery
npm install
npm run dev # start the dev server
npm run build # production build → dist/
npm run preview # preview the production buildDeployed to GitHub Pages via
.github/workflows/deploy.yml: every push to
the deploy branch builds the app and publishes dist/. The Vite base is set
to /summerhome/ to match the Pages URL:
https://bloom79.github.io/summerhome/
First-time setup: in the repository Settings → Pages, set Source to GitHub Actions (one time). After that the workflow deploys automatically.
- Listings in
src/data.jsare demonstration data with real coordinates, ready to be wired up to a real data source / API.