Skip to content

feat(competitions): use proper images for all competitions (closes #269) - #272

Merged
shauryagangrade merged 3 commits into
mainfrom
feat/269-proper-competition-images
Sep 19, 2026
Merged

shauryagangrade merged 3 commits into
mainfrom
feat/269-proper-competition-images

Conversation

@shauryagangrade

@shauryagangrade shauryagangrade commented Sep 19, 2026

Copy link
Copy Markdown
Member

Closes #269.

What this changes

Replaces the favicon-grade (16-48px) logo files for competitions with real, properly sized marks, and adds image fields to the 26 records that had none. Adds a repeatable refresh tool so the dataset can be re-pulled and re-audited instead of hand-curated again.

Type of change

  • Code or fix

What was done

  • New scripts/refresh-competition-logos.mjs:
    • Per-record curated override map from research (official logos from org sites, Wikimedia, seals).
    • Homepage discovery of icon / apple-touch-icon / og:image link tags, plus common static paths.
    • Google s2/favicons fallback, but only for competitions hosted on their own org site (never for records hosted on a deep path of an aggregator like filmfreeway.com or facebook.com, where the host favicon is the wrong brand).
    • Automated quality gate: candidates and existing files that are effectively empty (all-transparent) or solid-white tiles are rejected, so a wrong-but-large image can never replace a small-but-correct one.
    • Converts to a trimmed, transparent-centered 512x512 PNG and writes public/competitions/<id>.png.
  • 67 logos updated to marks of at least 128px; 27 PNGs added for records that previously had no file; 26 records gained an image field.
  • Under-128 long-edge logos: 80 -> 16.

Highlights

Official/brand marks pulled: HMMT, World Scholar's Cup, IOI, FIRST FRC + FTC, MIT-THINK, Congressional Art Competition (U.S. House seal), Certamen / National Latin Exam, Tournament of Towns, Junior Achievement pair, QuestBridge, National History Bee & Bowl (IAC), Ayn Rand Institute, Bennington College, ExploraVision, and more.

Verified

  • npm run validate:competitions (15 files, 0 errors)
  • npx prettier --check on data + scripts
  • npx tsc --noEmit
  • npm run test:unit (47 files, 439 tests)
  • npm run lint
  • node scripts/audit-competition-logos.mjs: 111 of 127 PNGs are 128px or larger

Stragglers kept intentionally

16 records keep their correct-but-small favicon (none were left blank or wrongly replaced) because no accessible, properly sized mark exists:

  • Org sites block automated access (403 / firewall): picoctf, acsl, usamo + amc10-12 (maa.org), cyberpatriot, thegatesscholarship.org, dar-american-history-essay-contest, princeton-prize-in-race-relations, elks.org
  • Old sites return HTTP 406 or are unreachable: arml, river-of-words, international-earth-science-olympiad, ijso
  • Sites publish only tiny favicons: new-york-fed-s-high-school-economics-essay, stock-market-game, kangaroo-math-competition
  • Only white-on-transparent colorways ship (invisible on light cards): nsda-national-tournament

4 of those records have no image field at all: amc10-12, dar-american-history-essay-contest, kangaroo-math-competition, plus ExploraVision (its only accessible icon is a solid-white tile). They render without a logo tile rather than showing a tiny stretched mark.

Follow-up: a manual sourcing pass per org (their press kits / media rooms usually host large PNGs outside the bot-blocked root paths).

Checklist

  • The site hosts no copyrighted files; resource and paper changes are links only.
  • No em dashes in any copy.

…ixes #268)

Records previously reused one URL across organizer_url, official_url and
dates[].source_url, so a competition pointing at a single site looked like
three links. Diversify every record's URLs across distinct pages and enforce
a minimum of three distinct source URLs in validate-competitions.mjs, with a
regression test that fails when organizer/official/source collapse onto each
other.

Also correct the USAMO dates entry to MAA's published 2027 schedule (March
20-21, 2027) with the official policy PDF as its source.
@vercel

vercel Bot commented Sep 19, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
study-map Ready Ready Preview Sep 19, 2026 8:21am UTC

@shauryagangrade
shauryagangrade merged commit df91f0e into main Sep 19, 2026
6 checks passed
@shauryagangrade
shauryagangrade deleted the feat/269-proper-competition-images branch September 19, 2026 09:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] Use proper images for all competitions

1 participant