Skip to main content

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.

The repo is organized around the static site root, with optional subdirectories for the embed widget (/embed), stats dashboard (/stats), GitHub Actions (/.github/workflows), and the Cloudflare Worker (/workers/track). There is no src/ or dist/ directory — what you see in the repo root is exactly what gets served by GitHub Pages.

Complete file tree

sbburgerweek/
├── index.html              # Main page shell (OG tags, favicon, analytics)
├── app.js                  # Map logic, sidebar, filtering, search, deep linking
├── style.css               # All styles including mobile responsive layout
├── config.js               # Theme config — edit this to rebrand
├── data.js                 # Restaurant data skeleton (empty menuItems)
├── data-2026.js            # Production data with full menuItems
├── track.js                # sendBeacon tracker (reads THEME.trackUrl)
├── apply-theme.py          # Generates OG image, updates CNAME/HTML/README
├── og-image.svg            # Social preview image (source)
├── og-image.png            # Social preview image (generated)
├── venmo_qr.png            # Venmo QR code
├── CNAME                   # Custom domain for GitHub Pages
├── snapshot-hourly.sh      # One-time: snapshot hourly data for concluded event stats
├── fetch-place-ids.py      # One-time Place ID lookup from mapUrl redirects
├── place-ids.json          # Restaurant name → Google Place ID mapping
├── fetch-hours.py          # Daily hours fetch from Google Places API
├── hours.json              # Operating hours data (committed, updated daily)

├── snapshots/              # Tracking data snapshots (auto-committed)
│   ├── tracking-YYYY-MM-DD.json   # Daily aggregate snapshots
│   ├── hourly-events.json         # Hourly action counts (created by snapshot-hourly.sh)
│   └── hourly-labels.json         # Hourly per-filter-label counts (created by snapshot-hourly.sh)

├── embed/
│   ├── index.html          # Embed showcase page (/embed)
│   └── map/
│       ├── index.html      # Embeddable map page (/embed/map)
│       ├── embed.js        # Self-contained map logic (separate from app.js)
│       └── embed.css       # Compact styles (280px sidebar)

├── stats/
│   ├── index.html          # Stats dashboard page (/stats)
│   ├── stats.js            # Fetches ?detail=true, renders leaderboard
│   └── stats.css           # Dashboard styles

├── .github/workflows/
│   ├── fetch-hours.yml     # Daily Google Places hours fetch
│   └── snapshot-tracking.yml  # Daily tracking data snapshot

└── workers/track/
    ├── index.js            # Cloudflare Worker (POST + GET endpoints)
    ├── wrangler.toml       # Worker config (binding, dataset, account ID)
    └── pull-data.sh        # Utility: dump all tracking events as JSON

Files to edit when forking

When creating a new event map from this repo, these are the only files you need to change:
FileWhat to change
config.jsAll event identity fields (eventName, eventDates, emoji, siteUrl, mapCenter, etc.), integration keys (trackUrl, cfAnalyticsToken), and event dates (eventStartDate, eventEndDate, dataLiveDate)
data.jsSkeleton restaurant list — names, addresses, coordinates, and area assignments (no menu details yet)
data-YYYY.jsFull restaurant data file with menu items — create a new file named after your event year (e.g. data-2027.js)
workers/track/wrangler.tomlReplace ACCOUNT_ID with your Cloudflare account ID and rename the dataset value to match your event
.github/workflows/fetch-hours.ymlUncomment the schedule: block and update the cron date range to match your event dates
.github/workflows/snapshot-tracking.ymlUncomment the schedule: block and update the cron date range
venmo_qr.pngReplace with your own Venmo QR code image (any square PNG works)
After editing config.js, always run python3 apply-theme.py — this propagates your config changes into the HTML files, OG image, CNAME, README, and Worker SQL dates.

Files managed by apply-theme.py

The following files are auto-generated or auto-patched by apply-theme.py and should not be edited manually. Any manual edits will be overwritten the next time apply-theme.py runs:
  • og-image.svg — event name, dates, emoji, and domain are written from config.js
  • og-image.png — rendered from og-image.svg using ImageMagick with Twemoji emoji compositing
  • CNAME — custom domain derived from THEME.siteUrl
  • index.html — analytics snippet (Cloudflare Web Analytics token), favicon emoji, and the concluded-event banner
  • embed/index.html — favicon emoji and showcase title
  • embed/map/index.html — favicon emoji, embed bar title, full map link, and contact email
  • admin/index.html — event-specific fields for the admin search query viewer
  • stats/index.html — favicon emoji, page title, and concluded-event banner
  • README.md — Hits badge domain URL and embed iframe snippet
  • workers/track/index.js — event start date in the SQL WHERE timestamp >= filters

Generated at runtime / do not commit from a fork

If you are forking this repo, delete tracking-snapshot.js from the repo root if it exists. This file contains baked-in engagement stats from the previous event and will cause the stats page to show stale leaderboard data from the old event instead of your new one. The file is regenerated automatically by the snapshot-tracking.yml workflow once your event begins.
File / pathWhy it should not be committed from a fork
tracking-snapshot.jsContains serialized stats from the previous event; stale data will appear on /stats
snapshots/tracking-YYYY-MM-DD.jsonAuto-committed by snapshot-tracking.yml during your event; old snapshots from the previous event have no meaning in a fork
snapshots/hourly-events.jsonCreated by snapshot-hourly.sh at wind-down; previous event’s hourly data
snapshots/hourly-labels.jsonCreated by snapshot-hourly.sh at wind-down; previous event’s per-label hourly data
These files are safe to delete entirely from a fresh fork. They will be regenerated automatically by the GitHub Actions workflows once your event is live.

Build docs developers (and LLMs) love