Static (no-build) app for comparing Six Flags season passes.
index.html- page markup + script load order.styles.css- all styling (light/dark viadata-themeon<html>).
companies.js- company configuration + URL building helpers.park-data.js- the canonical nested company -> portal -> group -> park data, including portal codes and pricing source definitions.parks.js- derives the browser park catalog (parkCatalog) frompark-data.js.price-overrides.js- generated pricing overrides, kept separate from the park definitions.scripts/price-sources.json- shared portal URL rules used by the daily price updater.pass-catalog.js- builds the derived catalog used by the app:passOffers(the main list rendered on screen)companyFilterOptions,allParkFilterOptions- park link helpers like
getParkWebsiteUrl(),getPassPurchaseUrl() - location helpers like
countryFilterOptions,getStateOptionsForCountry()
filters.js- filter UI + filter state (window.PassExplorer.state) + mobile filter sidebar toggle.render.js- renders the pass cards (window.PassExplorer.renderPasses()).pricing.js- price parsing + display formatting (formatOfferPrice()).theme.js- theme selection + theme toggle (persistspe-theme).main.js- app bootstrap / orchestration (wires DOM → binds events → initial render).
The app is set up as a blank slate for manual park entry and pricing work.
- Add park data directly in
parks.js. - Put current prices in
price-overrides.jsso the park catalog stays clean. - Keep the theme, filters, and layout as-is while you rebuild the catalog.
scripts/update-price-overrides.mjsfetches the live park pages listed inscripts/price-sources.json.park-data.jsis the single place to add a park. Nest parks under their company, portal, and catalog group.scripts/price-sources.jsoncontains only shared portal hosts and URL suffixes.- The script rewrites
price-overrides.jsso the app always reads current prices from the generated layer. .github/workflows/update-price-overrides.ymlruns the script daily and commits any price changes back to the repo.