尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Hack for Humanity
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Find a home based on where your life happens – not just where you think you should live.
HomeMatch is a commute-based housing search for Dublin. Instead of asking "Where do you want to live?", it asks "Where do you need to go?" – then ranks homes by how well they fit your budget, your commute, your public transport options and your lifestyle, and explains why each one was recommended.
Built for the Hack for Humanity – Local Track hackathon. 📑 View the pitch deck (PDF)
Property sites make you pick an area first, then filter by price and bedrooms. But most people don't need one specific neighbourhood – they need to reach work, school, family and childcare easily and affordably, with or without a car.
Because people instinctively search as central as possible, demand concentrates in a few areas and prices rise disproportionately, while well-connected homes further out go unseen.
The result: a suitable home often exists somewhere you never thought to look, because it appears "too far" on a map even though it sits next to a tram stop, or a home that looks close has no useful transport at all.
| Traditional search | HomeMatch | |
|---|---|---|
| Starting point | Area → Properties | Your destinations → Properties |
| Distance | Straight-line / map distance | Real door-to-door commute time by your chosen modes |
| Results | Strict filters (hide anything that misses) | Match Score that surfaces good trade-offs |
| Transparency | A list | "Why we recommended this" – strengths and trade-offs |
Example: a €1,800/month apartment that isn't walkable to your office but is beside a Luas stop and needs no car can outrank a closer one with poor connections.
Renters and buyers new to a city, students, young professionals, families, people changing jobs, people without cars, and hybrid workers – including households with several people going to several places.
docs/whimsy.md).Every property is scored rather than hard-filtered:
| Component | Weight |
|---|---|
| Affordability | 35% |
| Commute (weighted by destination importance × visits/week) | 30% |
| Transport connectivity (from GTFS stop/line data) | 15% |
| Property requirements (type, bedrooms, …) | 10% |
| Lifestyle (nearby amenities) | 10% |
For each destination, HomeMatch builds candidate journeys for the modes you picked and times each leg on OpenStreetMap:
The first search for a new set of destinations takes ~10 s (requests are spaced out for the shared OSRM server); repeats are served from cache.
| Route | Purpose |
|---|---|
/ | Landing page with the Luas-door hero |
/preferences | Budget, bedrooms, max commute, transport modes, destinations |
/results | Ranked property cards + map |
/properties/[id] | Property detail, "why it matches", commutes, amenities |
POST /api/match | Takes preferences, returns ranked MatchResult[] (validated, JSON-only, 16 KB cap) |
GET /api/amenities/[propertyId] | Precomputed nearby amenities |
next.config.mjs, input validation in lib/validate.ts| Data | Source | When |
|---|---|---|
| Listings (11 Dublin rentals + 2 sample purchase listings) | Daft.ie – coordinates, rooms, facilities in lib/data.ts | static |
| Stops and which lines serve them | NTA GTFS timetable → data/generated/transit.json | build time |
| Journey times | OSRM table service, batched + cached | request time |
| Kindergartens, schools, groceries | OpenStreetMap Overpass → data/generated/amenities.json | build time |
| Destination coordinates | OpenStreetMap Nominatim (1 req/s, cached) | request time |
| Map tiles | OpenStreetMap via Leaflet | browser |
Requires Node ≥ 22.18 (the data scripts import lib/data.ts using Node's built-in TypeScript support). No API keys needed.
npm install
npm run dev # http://localhost:3000
The generated data in data/generated/ is committed, so the app runs straight away.
| Script | What it does |
|---|---|
npm run dev | Start the dev server |
npm run build / npm start | Production build / serve |
npm run lint | Lint the project |
npm run prepare-data | Refresh GTFS transit data (~1 min) and OSM amenities (a few min) |
npm run build:transit / npm run build:amenities | Run either data step on its own |
app/ Pages and API routes (landing, preferences, results, properties, /api/*)
components/ Map, header/footer, commutes panel, UI + whimsy components
lib/ Matching engine (matching.ts), listings (data.ts), validation,
transit/ (OSRM routing, GTFS connectivity, geocoding)
data/generated/ Prebuilt transit and amenity data
scripts/ build-transit.mjs, fetch-amenities.mjs
docs/ design-system.md ("Night Line"), whimsy.md
public/hero/ Hero imagery
Better search won't solve housing supply, but it can improve housing discovery. HomeMatch does the transport analysis for you, so people can find well-connected homes in areas they hadn't considered – without researching every district of the city.
HomeMatch is Skyscanner for housing. Don't search neighbourhoods. Search for the home that fits your life.
Built by Alper Ergüne, Guillermo Garcia and Kacper Kotwica for the Hack for Humanity Local Track.
No license has been specified yet.