Documentation Index
Fetch the complete documentation index at: https://mintlify.com/samgutentag/sbburgerweek/llms.txt
Use this file to discover all available pages before exploring further.
config.js exports a single THEME object that is the single source of truth for every event-specific value in the map. Every field is documented below with its type, the default value from the SB Burger Week 2026 configuration, and whether changing it requires running python3 apply-theme.py to propagate the update into static files like og-image.png, index.html, and the Worker code.
Event Identity
These fields control how the event is named and presented across the map header, About modal, social preview image, and browser favicon.Full event title shown in the page header, About modal, and Open Graph tags.
Example:
"SB Burger Week 2026".Date range string displayed in the header beneath the event name.
Example:
"Feb 19–25". No specific format is enforced — use whatever reads
naturally for your event.A single emoji used as the browser favicon, map marker icon, popup header, and
random-restaurant picker button. Example:
"🍔". Changing this requires
running python3 apply-theme.py to update index.html and regenerate the
social preview image.First line of large text rendered on the social preview OG image
(
og-image.png). Typically the city or region name. Example:
"Santa Barbara". Requires running python3 apply-theme.py after changing.Second line of large text rendered on the social preview OG image. Typically
the event name and year. Example:
"Burger Week 2026". Requires running
python3 apply-theme.py after changing.Item Labels
These fields control how the featured menu item is referred to throughout the UI — in filter labels, tooltips, the random picker button, and the tip jar copy.Singular name for the featured menu item. Used wherever the UI refers to a
single item. Example:
"burger". For a taco event, use "taco".Plural form of the featured menu item label. Example:
"burgers". Used in
headings like “X burgers found” and filter result counts.Site & SEO
These fields control how the site identifies itself to search engines and link-unfurlers, and provide the source article attribution shown in the header and About modal.Full canonical URL of the deployed site, including the
https:// scheme and
no trailing slash. Example: "https://sbburgerweekmap.com". Used for Open
Graph og:url tags, the copy-embed snippet, share links, and the print page
header. Requires running python3 apply-theme.py after changing.Meta description used by search engines and link previews. Appears in the
<meta name="description"> tag. Example: "Interactive map of all participating restaurants. Search, filter by area, and get directions.".Display text for the source article link shown in the page header and About
modal. Example:
"Source: The Independent".Full URL of the source article where the restaurant list was published.
Example:
"https://www.independent.com/2026/02/18/go-beast-mode-for-santa-barbara-burger-week-2026".URL of the GitHub repository. Shown in the About modal and footer “Fork it”
links. Example:
"https://github.com/samgutentag/sbburgerweek".Map
These fields set the initial viewport when the map first loads.Starting map center as a two-element array of
[latitude, longitude] in
decimal degrees. Example: [34.42, -119.7] (downtown Santa Barbara). The map
uses this as the initial view before any user interaction.Starting Leaflet zoom level. Higher values zoom in closer. Example:
13
(neighborhood level). Typical values range from 11 (city-wide) to 15
(street-level).Tip Jar
The tip jar is an optional Venmo link that appears in the footer. SetvenmoUser to null to hide it entirely. The tip jar supports three tiers displayed as buttons of different sizes.
Venmo username (without the
@). When set, a tip jar button appears in the
footer that opens a Venmo payment link. Set to null to hide the tip jar
completely. Example: "samgutentag".Pre-filled payment note that appears in the Venmo app when the tip link is
opened. Example:
"Buy me a burger?".Array of tip tier objects defining the three buttons in the tip jar modal.
Each object has the following shape:
The
| Property | Type | Description |
|---|---|---|
size | "s" | "m" | "l" | Button size. "s" uses a custom emoji. "m" uses half the theme emoji. "l" uses the full theme emoji. |
label | string | Human-readable label shown on the button. Example: "Half a Burger". |
emoji | string | Custom emoji, only used when size is "s". Example: "🍟". |
amount | number | Dollar amount sent to Venmo. |
"m" (medium) tier is automatically featured with an orange border. Clicking any tier fires a tip-s, tip-m, or tip-l tracking event.Data & Dates
These fields control which data file is loaded, when the event is considered active, and how localStorage namespacing works to avoid collisions between events.The
localStorage key used to persist each user’s saved favorites (the
“My Picks” checklist). Use a unique value per event year to avoid collisions
with previous events on the same domain. Example:
"sbburgerweek-checklist".Title shown at the top of the printable “My Picks” page (
/print). Example:
"SB Burger Week 2026 — My Picks".ISO date string (
"YYYY-MM-DD") for the first day of the event. Used by the
stats dashboard for analytics time filters and by getEventState() to
determine whether the map is in pre-event, during, or post-event state.
Example: "2026-02-19".ISO date string (
"YYYY-MM-DD") for the last day of the event. After this
date, the concluded banner and modal are automatically shown. Set to null to
never show the concluded state. Example: "2026-02-25".ISO date string (
"YYYY-MM-DD") that gates when full restaurant data is
shown. Before this date, data.js (the skeleton with empty menuItems)
is loaded. On or after this date, data-YYYY.js (full menu details) is
loaded. The switchover happens at 12:01 AM local time. Set to null to
always load the full data file. Example: "2026-02-18".Integrations
These fields connect the map to external services. All are nullable — setting any of them tonull disables the corresponding feature with no other changes required.
Full URL of the deployed Cloudflare Worker that receives tracking events via
sendBeacon POST requests. null disables all click tracking and the stats
dashboard will show no data. Requires running python3 apply-theme.py after
changing so the Worker URL is updated in static files. Example:
"https://sbburgerweek-track.example.workers.dev".Cloudflare Web Analytics token (a hex string). When set,
apply-theme.py
injects the Cloudflare analytics <script> into index.html. This token is
public and safe to commit — it is client-side only. Set to null to remove
the analytics snippet entirely. Requires running python3 apply-theme.py
after changing.Domain used to auto-generate the contact email address shown in the About
modal. The full address is constructed as
sb{itemLabel}week{year}@{contactDomain}. Example: "samgutentag.com"
produces sbburgerweek2026@samgutentag.com. Set to null to hide the
contact link entirely.This field should always be
null in committed code. It exists as a
documentation placeholder — the actual Google Places API key is stored in the
GOOGLE_PLACES_API_KEY GitHub repo secret and is read by fetch-hours.py
and fetch-place-ids.py at workflow runtime. The key is never exposed
client-side.Filters
These arrays define the filter buttons that appear in the map sidebar. Tag filters are always visible; hours filters are hidden untilhours.json successfully loads.
Array of dietary tag filter objects. Each filter maps to a boolean field on
restaurant objects. When a user activates a filter, only restaurants where
that field is
Default filters:
true are shown.Each object has the following shape:| Property | Type | Description |
|---|---|---|
key | string | Must exactly match a boolean field name on restaurant objects (e.g. "vegetarian"). |
icon | string | Emoji displayed on the filter button. |
label | string | Human-readable label. Example: "Vegetarian". |
vegetarian (🌱), glutenFree (🚫), hasFries (🍟).Array of time-of-day filter objects. These filters are hidden until
Default filters:
hours.json loads successfully. The key values ("open", "lunch",
"dinner") are computed dynamically from the hours data — they do not
correspond to static boolean fields on restaurant objects.Each object has the following shape:| Property | Type | Description |
|---|---|---|
key | string | Filter key ("open", "lunch", or "dinner"). |
icon | string | Emoji displayed on the filter button. |
label | string | Human-readable label. Example: "Open Now". |
open (🟢 Open Now), lunch (☀️ Lunch), dinner (🌙 Dinner).Next Event
This property is assigned on theTHEME object after the object literal, at the bottom of config.js.
Promo object shown in the off-season banner to point visitors to the next
upcoming event. Set to When not
null to display a generic “check back soon” message
instead. Example:null, the value should be an object describing the next event (name, URL, dates). During the active SB Burger Week 2026 season this is set to null.