Mobile-first pink blossom tree map for Cherry / Plum / Peach / Magnolia / Crabapple.
Live domain:
- Official-jurisdiction-boundary coverage only.
- Mobile-first map UI with desktop split layout.
- Five blossom groups:
cherry,plum,peach,magnolia,crabapple. - Multilingual UI:
en-US,zh-CN,zh-TW,es-ES,ko-KR,ja-JP,fr-FR,vi-VN. - Covered areas and gray researched areas are both shown on the map.
- Every accepted local change must also be synchronized into
/Users/zhangziling/Documents/Project-Pink-Hunter/GitHub/pink-hunter. - After sync, the GitHub export repo must be committed and pushed to FlalaGoGoGo/pink-hunter.
- Policy doc: docs/ops/github-sync-policy.md
- Preferred helper:
./scripts/sync_github_export.sh "Commit message" - Preferred command wrapper:
./scripts/ops_runner.sh sync-release "Commit message" - Published region data must pass
./scripts/check_region_data_sizes.py --data-dir public/databefore sync/push.
Washington
- Seattle
- Bellevue
- Redmond
- Renton
- Kenmore
- SeaTac
- Sammamish
- Shoreline
- Snohomish
- Everett
- Kirkland
- Bellingham
- Spokane
- Yakima
- Walla Walla
- Puyallup
- Gig Harbor
New York
- New York City
Connecticut
- Greenwich
- Groton
- Hartford
- New Haven
- Stamford
- West Hartford
Virginia
- Arlington
- Fairfax
- Falls Church
- Richmond
- Virginia Beach
Maryland
- Baltimore
New Jersey
- Dumont
- Ho-Ho-Kus
- Hoboken
- Jersey City
- Millburn
- Montclair
- Morristown
- Newark
- Oradell
- Princeton
- River Edge
- Rutherford
- Westwood
Pennsylvania
- Philadelphia
- Pittsburgh
Massachusetts
- Belmont
- Boston
- Cambridge
- Dedham
- Newton
- Somerville
- Springfield
- Waltham
- Worcester
Texas
- Austin
- Dallas
- Houston
Colorado
- Denver
Nevada
- Las Vegas
Utah
- Salt Lake City
Ontario
- Ottawa
- Toronto
Quebec
- Montreal
Oregon
- Portland
California
- Anaheim
- Azusa
- Bell
- Berkeley
- Beverly Hills
- Buena Park
- Burbank
- Burlingame
- Camarillo
- Chino
- Citrus Heights
- Concord
- Corona
- Costa Mesa
- Cudahy
- Cupertino
- Dana Point
- El Segundo
- Encinitas
- Escondido
- Fontana
- Fremont
- Fullerton
- Gilroy
- Glendale
- Glendora
- Goleta
- Inglewood
- Irvine
- La Canada Flintridge
- La Mesa
- La Mirada
- La Verne
- Laguna Beach
- Lodi
- Los Angeles
- Los Gatos
- Maywood
- Milpitas
- Monterey Park
- Morgan Hill
- Mountain View
- Newport Beach
- Norwalk
- Oakland
- Oxnard
- Palo Alto
- Pasadena
- Pleasanton
- Pomona
- Poway
- Rancho Cucamonga
- Rancho Palos Verdes
- Redlands
- Redondo Beach
- Riverside
- Sacramento
- Salinas
- San Diego
- San Dimas
- San Fernando
- San Francisco
- San Jose
- San Mateo
- San Rafael
- Santa Barbara
- Santa Clarita
- Santa Fe Springs
- Santa Monica
- Santee
- Saratoga
- Solana Beach
- South Gate
- South San Francisco
- Sunnyvale
- Thousand Oaks
- Torrance
- Ventura
- Vista
- West Covina
- West Hollywood
- West Sacramento
- Yorba Linda
Washington, DC
- Washington DC
British Columbia
- New Westminster
- Vancouver BC
- Victoria BC
- Gray coverage marks cities whose official boundary is public but whose official public single-tree dataset is not available yet.
- Current gray-coverage examples include
Alexandria,Montgomery County,Newark,Santa Clara,Monterey,Napa,Richmond (CA),Santa Cruz,Santa Rosa,Stockton,Redwood City,Alameda,Hayward,Daly City,Long Beach,Santa Ana,Beaverton,Gresham,Hillsboro,Salem,Tigard,Burnaby,Coquitlam,Delta,Langley City,North Vancouver City,North Vancouver District,Richmond BC,Saanich,Surrey,West Vancouver, andWhite Rock. - Tracking details: docs/research/city-coverage-tracker.md
Washington
- Seattle: Combined Tree Point
- Bellevue: City Trees
- Redmond: TreeSite
- Renton: Tree Sites
- Kenmore: Public Trees
- SeaTac: Trees
- Sammamish: TreeKeeper Street Sites, TreeKeeper Park Sites
- Shoreline: Public Tree Inventory
- Snohomish: Snohomish Tree Inventory
- Everett: Everett TreeKeeper Park Sites
- Kirkland: 2023-2024 Kirkland Tree Inventory
- Bellingham: Bellingham Trees
- Spokane: Spokane Tree Inventory
- Yakima: Yakima Trees
- Walla Walla: City of Walla Walla Trees
- Puyallup: City Maintained Street Trees
- Gig Harbor: PW Trees Public Viewer
New York
- New York City: 2015 Street Tree Census - Tree Data
Connecticut
- Groton: Groton Tree Inventory
Virginia
- Arlington: Open Data Portal
- Richmond: Tree Inventory, City of Richmond, Virginia
- Virginia Beach: VBTrees
Maryland
- Baltimore: Open Baltimore
New Jersey
- Jersey City: Urban Forests
- Morristown: Legacy Trees 2021
Pennsylvania
- Philadelphia: PPR Tree Inventory 2025
- Pittsburgh: TreeKeeper Inventory
Massachusetts
- Boston: BPRD Trees
- Cambridge: Street Trees
- Dedham: Tree Inventory
Texas
- Austin: Tree Inventory
- Dallas: Dallas Public Tree Inventory
- Houston: City of Houston Tree Inventory - PUBLIC
Colorado
- Denver: Public Tree Inventory
Nevada
- Las Vegas: CLV Tree Sites
Utah
- Salt Lake City: Urban Forestry Inventory
Ontario
- Ottawa: Canopy cover and tree inventory
- Toronto: Street Tree Data
Quebec
Oregon
- Portland: Street Tree Inventory - Active Records
California
- Burlingame: City Street Tree Inventory
- Anaheim: Anaheim All Layers Tree Inventory
- Azusa: City of Azusa Tree Inventory Benefits
- Bell: City of Bell Tree Inventory Benefits
- Beverly Hills: Trees of Beverly Hills
- Concord: Tree Inventory
- Costa Mesa: Costa Mesa Tree Benefits
- Palo Alto: City of Palo Alto Open GIS
- Berkeley: Tree_Berkeley20191107
- Cupertino: Cupertino Open Data GIS
- El Segundo: El Segundo Tree Inventory
- Fontana: Fontana i-Tree Inventory
- Fremont: Tree Inventory / Tree Value
- Fullerton: Fullerton Tree Benefits
- Gilroy: Tree Inventories in Santa Clara County
- Irvine: City Trees
- La Canada Flintridge: Homepage Inventory
- Los Angeles: Tree Inventory and Maintenance
- Los Gatos: Tree Inventories in Santa Clara County
- Maywood: Maywood i-Tree Inventory
- Mountain View: Trees
- Milpitas: Trees RO
- Monterey Park: i-Tree Benefits Summary
- Morgan Hill: Tree Inventories in Santa Clara County
- Newport Beach: Tree Inventory Dashboard
- Oakland: Oakland Street Trees
- Oxnard: Trees
- Pasadena: Street ROW Trees
- Pomona: CityOfPomona i-Tree Benefits Canopy Cover
- Rancho Cucamonga: Rancho Cucamonga Tree Benefits
- Rancho Palos Verdes: GIS Services
- Riverside: CityOfRiverside i-Tree Benefits
- Salinas: Tree Inventory
- Sacramento: City Maintained Trees
- San Dimas: City Owned Trees
- Santa Clarita: City of Santa Clarita i-Tree Benefits Canopy Cover
- Santa Monica: Trees
- San Diego: Trees (Street Trees)
- San Fernando: San Fernando CAL FIRE Tree Layer
- San Francisco: Street Tree List
- San Jose: Street Tree
- San Mateo: Street Trees
- San Rafael: Trees
- Saratoga: Tree Inventories in Santa Clara County
- South San Francisco: City Trees
- Sunnyvale: Tree Inventories in Santa Clara County
- West Sacramento: Tree Inventory
- West Hollywood: West Hollywood Public Tree Inventory
Washington, DC
- Washington DC: Urban Tree Canopy
British Columbia
- New Westminster: Tree Inventory (Active Trees)
- Vancouver BC: Public trees
- Victoria BC: Tree Species (Parks trees database)
Supplemental
- Seattle supplemental: UW OSM supplemental cache
- Install dependencies
npm install
- Install ETL dependencies
python3 -m pip install -r requirements.txt
- Build data
npm run etl
- Run the app
npm run dev
- Build for production
npm run build
public/data/trees.<region>.area-index.v2.jsonpublic/data/trees.<region>.area.<slug>.v2.geojsonpublic/data/trees.<region>.area.<slug>.shard-###.v2.geojson(for larger areas)public/data/coverage.v1.geojsonpublic/data/species-guide.v1.jsonpublic/data/jump-index.v1.jsonpublic/data/meta.v2.jsonpublic/data/unknown_scientific_names.v1.json
data/normalized/trees_normalized.csv
- Tree points are now published by
area + shardfor every region, not as region-wide GeoJSON files. - Current regional groups:
WACAORDCBCVAMDNJNYPAMA
- Local-only ETL audit outputs such as
data/normalized/trees_normalized.csvanddata/tmp/*are not part of the GitHub export repo. public/data/meta.v2.jsoncontains the region index, region bounds, species-count summaries, aggregate size metadata, and area-shard publish metadata for the full site, each region, and each published area.public/data/jump-index.v1.jsonprovides lightweightcountry -> state/province -> city/countynavigation bounds for theShow -> Jumpworkflow without coupling navigation to tree payload loading.- All published tree-point files now follow the same area-shard contract:
public/data/trees.<region>.area-index.v2.jsonpublic/data/trees.<region>.area.<slug>.v2.geojsonpublic/data/trees.<region>.area.<slug>.shard-###.v2.geojson
- If a full ETL run is blocked but current published region files are still available locally, refresh area-shard outputs with:
python3 scripts/refresh_region_area_shards.py --data-dir public/data --region all
- If coverage or gray-coverage rules changed without rebuilding all tree data, refresh coverage and bounds with:
python3 scripts/refresh_coverage_metadata.py --data-dir public/data
- Publish safety thresholds for each shard:
target_split:>= 20 MiB rawmust_split:>= 25 MiB rawhard_fail:>= 30 MiB raw
- Region aggregate size is still tracked, but only as advisory scale metadata and not as a GitHub single-file risk.
- Docs index: docs/README.md
- Ops: docs/ops/README.md
- Architecture: docs/architecture/README.md
- Strategy: docs/strategy/README.md
- Research: docs/research/README.md
- Public data interfaces: docs/architecture/public-data-interfaces.md
- Coverage tracker: docs/research/city-coverage-tracker.md
- ETL methods: docs/research/city-etl-methods.md
- GitHub sync policy: docs/ops/github-sync-policy.md