Yardly
A map-first way to find nearby yard and estate sales.
An early prototype of a location-centered discovery experience: search around a place, filter nearby sales, and see them on a practical local map.
- Status
- PUBLIC REPOSITORY
- Source
- Public repository
- Capabilities
The problem
Yard, garage, and estate sale listings are scattered across many places, so finding what is happening nearby means checking each one.
Yardly is an early prototype that explores a map-first search for sales around a chosen place.
The system
Map-first results
Clustered sale markers on an interactive map, alongside list and calendar views.
Search by place
Search by address, city, or ZIP code, or use the browser’s location, within a chosen radius.
Filters and sorting
Filter by sale type, dates, keywords, and source, and sort by distance or date.
Sale detail
Dates, address, description, the places a sale was listed, and private notes.
How it was built
An Angular frontend using signals for state talks to an Express API that also serves the built app. The API validates each search, removes duplicate listings, filters by distance, and caches the result.
SQLite stores accounts, user-submitted sales, notes, saved searches, and a geocoding cache. The map is rendered with MapLibre.
Interface
- Angular app
- Map, list, and calendar
API
- Express
- Validated search
Listings
- Duplicate merging
- Radius filter
- Result cache
Storage
- SQLite
- Geocoding cache
Technology
Design decisions
Signals instead of a store library
Angular signals hold search and filter state, which keeps a small app free of store boilerplate.
SQLite for a small server
A single-file database fits a small single-server deployment, with write-ahead logging for concurrent reads.
Stable listing IDs
Hash-based IDs keep a user’s notes attached even if a listing disappears and comes back.
Selected views
Current state
Public repository. Yardly is an early, hobby-scale prototype designed for a single server, with no automated tests yet. Its results can change between searches.



