Part of #1002.
Problem
0 of 400 trails sampled across production carry a photo of the trail; they carry Unsplash stock. The trail page labels this honestly — "Illustrative photo" — which is the right call and also an admission on every page. AllTrails leads with a real photo and a community gallery, and that single difference is most of what "they look higher quality" means.
Why this is tractable
We already attribute real imagery properly:
app/Support/trailAreaPhotos.tsandapp/Support/curatedTrailPhotos.tssource and credit Wikimedia Commons photos, with licence and source URL.- The four Santa Barbara Island trails already show an attributed island photo, labelled as an area photo rather than passed off as the trail —
tests/browser/trail-area-photos.test.tspins that. - Trail photo upload by athletes exists (
TrailPhotoStoreAction), so community photos have somewhere to land.
The gap is coverage and aim, not capability.
Acceptance
- Photo sourcing pointed at the trails people actually open — most-viewed, most-saved, most-reviewed — rather than attempted across 596k rows.
- Area photos stay labelled as area photos; nothing implies a photo is of the trail when it is of the region.
- Licence, author and source URL carried for every sourced photo, as the existing helpers already do.
- A trail with no real photo keeps the illustrative label rather than gaining a misleading one.
- Coverage reported over the top-N set, so "did this work" has an answer.