Fix missing artwork images, add open-access sources & an About page#9
Merged
pedrobritx merged 1 commit intoJun 15, 2026
Merged
Conversation
Images: the blank "title-only" cards were all Art Institute of Chicago works. AIC's IIIF host now sits behind Cloudflare bot protection and answers hotlinked <img> requests with a 403 challenge instead of the image (public proxies are blocked too). Met and Cleveland load fine. - Add an optional NEXT_PUBLIC_IMAGE_PROXY hook; AIC image URLs route through it when set, and ArtImage prefers it in its fallback chain. - Mark each source imagesReliable and default the grid to the reliable set (DEFAULT_SOURCES) so the wall never fills with blanks. AIC stays a filter toggle and remains the browse-by-colour engine. Sources: refactor lib/sources.ts into a pluggable adapter registry and add two keyless, CORS, CC0 museums — Statens Museum for Kunst (SMK) and Wikimedia Commons. Key-gated museums can register behind NEXT_PUBLIC_* keys via the same interface. Public exports (SOURCES, searchArtworks, getArtwork, …) are unchanged; new sources light up the museum filter. About: add an /about page (manifesto, MIT license summary, credits, and links to GitHub/LinkedIn/site/Buy me a coffee), a root MIT LICENSE, a quiet rail footer + Settings link, new icons, and README updates.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Some cards showed only a title and a blank image. Investigating: every blank card was an Art Institute of Chicago (AIC) work. AIC's IIIF image host (
www.artic.edu/iiif/2) now sits behind Cloudflare bot protection and answers hotlinked<img>requests with an HTTP 403 "Just a moment…" challenge instead of the picture. Public image proxies (weserv, corsproxy, allorigins) are blocked too. The Met and Cleveland image hosts return200fine — so only Chicago broke.What changed
1. Ensure art always shows
NEXT_PUBLIC_IMAGE_PROXY. AIC image URLs route through it when set;ArtImageprefers it in its fallback chain. Point it at a proxy you control (e.g. a free Cloudflare Worker) to bring AIC images back everywhere.imagesReliableflag; the default selection (DEFAULT_SOURCES) is the reliable set, so the wall never fills with title-only blanks. AIC stays a filter toggle and remains the browse-by-colour engine (the only source publishing dominant colour).2. More open-access museums
lib/sources.tsinto a pluggable adapter registry (MuseumAdapter:search/getById+imagesReliable/hasColor). Adding a museum is now local.api.smk.dk(~39k public-domain works)Special:FilePath, which clamps width and always resolves)NEXT_PUBLIC_*keys via the same interface; NGA is CSV opendata (build-time, future).SOURCES,searchArtworks,getArtwork,SearchCursor, …) are unchanged — new sources light up the museum filter automatically.3. License, manifesto & links
/aboutpage: manifesto ("started wanting art on my TV → an art-museum hub for anyone"), MIT license summary, credits, and links to GitHub / LinkedIn / personal site / Buy me a coffee.LICENSE(MIT — "use it freely, just keep the credit").icons.tsxglyphs. README updated.Verification
npm run typecheck,npm run lint,npm run buildall pass (11 pages exported, incl./about).200 image/jpeg); Wikimedia search + pagination work andSpecial:FilePathimages load (200); confirmed AIC's host returns403(hence the proxy hook).Notes
NEXT_PUBLIC_IMAGE_PROXYto restore them — see.env.example.https://claude.ai/code/session_01Ko6vyP8nATEfBDcgCTm1qo
Generated by Claude Code