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.

Fork the repo, swap out the config, add your restaurants, and push — your food-week map will be live on GitHub Pages in under 15 minutes. This guide walks through every required step using “SB Burrito Week” as a running example.
1

Fork and clone

Fork the repo on GitHub, then clone your fork and start a local server:
git clone https://github.com/YOUR_USERNAME/sbburgerweek.git
cd sbburgerweek
python3 -m http.server 8000 --bind 127.0.0.1
Open http://localhost:8000 in your browser. A local server is required — file:// won’t work because scripts load via relative paths.To test with skeleton data (no menu details), append ?year=9999 to the URL:
http://localhost:8000/?year=9999
2

Install ImageMagick

ImageMagick is used by apply-theme.py to render the social preview PNG (og-image.png) from the SVG template. If it is missing the script warns and continues, but you won’t get a PNG.
brew install imagemagick
Verify the install:
magick --version
3

Configure your event

Open config.js and update the THEME object for your event. Every field has a comment, but the most important ones to change first are shown below:
const THEME = {
  // Event identity
  eventName: "SB Burrito Week 2026",
  eventDates: "Mar 5–11",
  emoji: "🌯",

  // OG image text (two lines for the social preview image)
  ogLine1: "Santa Barbara",
  ogLine2: "Burrito Week 2026",

  // Labels (what to call the featured item)
  itemLabel: "burrito",
  itemLabelPlural: "burritos",

  // Site URL (used for OG meta tags, embed snippets, print page)
  siteUrl: "https://sbburritoweekmap.com",

  // Map center [lat, lng] and starting zoom level
  mapCenter: [34.42, -119.7],
  mapZoom: 13,

  // Event start/end dates — drives the event state machine
  eventStartDate: "2026-03-05",
  eventEndDate: "2026-03-11",
};
After saving config.js, regenerate all derived files:
python3 apply-theme.py
Run this command every time you change config.js.
4

Add restaurants

Restaurant data lives in data.js (skeleton, shown before dataLiveDate) and data-YYYY.js (full details, shown on and after dataLiveDate). Both files share the same format.First, define your geographic areas and their marker colors at the top of each data file:
const AREA_COLORS = {
  "Downtown":  "#e63946",
  "Westside":  "#457b9d",
  "Eastside":  "#2a9d8f",
  "Midtown":   "#e9c46a",
};
Then add each restaurant to the restaurants array. A complete entry looks like this:
const restaurants = [
  {
    name:          "El Taco Loco",
    address:       "123 State St, Santa Barbara, CA 93101",
    area:          "Downtown",         // must match an AREA_COLORS key
    lat:           34.4208,
    lng:           -119.6982,
    mapUrl:        "https://maps.app.goo.gl/...",      // Google Maps share link
    appleMapsUrl:  "https://maps.apple.com/...",       // or null
    website:       "https://eltacoloco.com",           // or null
    phone:         "805-555-1234",                     // or null
    instagram:     "eltacoloco",                       // handle only, no @. or null
    vegetarian:    true,
    glutenFree:    false,
    hasFries:      false,
    menuItems: [
      { name: "The Monster Burrito", description: "Carne asada, beans, rice, guac, and salsa verde." },
      { name: "Veggie Supreme",      description: null },  // null → "More details coming soon!"
    ],
  },
];
An empty menuItems: [] shows “Details coming soon!” in the popup and sidebar card. See the data format reference for tips on getting coordinates and map links.
5

Generate assets

Run apply-theme.py to propagate your config.js changes to every file that cannot read the config at runtime:
python3 apply-theme.py
File updatedWhat changes
og-image.svgEvent name, dates, emoji, domain
og-image.pngRendered from the SVG with Twemoji emoji composite
CNAMECustom domain extracted from siteUrl
index.htmlFavicon emoji, page title, header text, analytics snippet
embed/index.htmlFavicon emoji, showcase title
embed/map/index.htmlEmbed bar title, full-map link, contact email
stats/index.htmlFavicon emoji, page title, concluded banner
README.mdHits badge domain, embed snippet, title
workers/track/index.jsEvent start date in SQL queries
.github/workflows/snapshot-tracking.ymlEvent start date in SQL queries
Commit all changes after the script runs.
6

Deploy to GitHub Pages

  1. Go to your repository on GitHub → SettingsPages.
  2. Under Source, choose Deploy from a branch.
  3. Select the main branch and / (root) directory, then click Save.
  4. Wait 1–2 minutes. Your map is live at https://YOUR_USERNAME.github.io/sbburgerweek/.
If you set a custom domain in config.js, the CNAME file was already written by apply-theme.py. Point your DNS to GitHub Pages’ IP addresses and enter the domain under Settings → Pages → Custom domain.
The steps above get you a fully working map. Optional features — click tracking via a Cloudflare Worker, live restaurant hours from the Google Places API, and Cloudflare Web Analytics — are covered in the Optional Features section.

Build docs developers (and LLMs) love