How the Balboa Park Free Days schedule data works, and how to update it.
All schedule data for this site lives in a single file: data.json.
Every museum name, website link, free-day slot, and month exclusion is defined there.
The HTML page reads it on load and renders everything — no data exists anywhere else.
To update the schedule (e.g. a museum joins, drops out, or changes its exclusion months),
edit data.json only. The site updates automatically on next page load.
The file contains a slots array. Each slot represents one free-day type —
for example, "every 3rd Tuesday" is one slot.
| Field | Type | Description |
|---|---|---|
| id | number | Unique identifier. Not shown on the site — just used internally. Don't reuse IDs if you remove a slot. |
| label | string | Display name shown in the UI, e.g. "3rd Tuesday". |
| weekday | string | Day of the week, lowercase. Must be one of: "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday". |
| occurrence | number | Which occurrence of that weekday in the month. 1 = first, 2 = second, 3 = third, 4 = fourth. |
| museums | object[] | List of museums participating on this slot's day. See museum fields below. |
Each entry in a slot's museums array has these fields:
| Field | Type | Description |
|---|---|---|
| name | string | Display name of the museum as it appears on the site. |
| url | string | Official website URL. This is what the museum name links to. |
| note | string | Short caveat shown in parentheses in the "Next Free Day" banner — e.g. "films excluded" or "special exhibitions excluded". Use an empty string "" if there's nothing to note. |
| skipMonths | string[] | Months when just this museum opts out, even though the rest of the slot still runs. Same format as the slot-level skipMonths — full lowercase month names. Leave as [] if the museum participates all year. |
Use these exact lowercase strings in any skipMonths array:
A slot where two museums participate, but one skips January and December:
Live view of what's in data.json right now, rendered in plain English:
Museum schedules change without much notice. If you spot incorrect data — a missing museum, a wrong exclusion month, a dead link, or anything else — please check against the official Balboa Park schedule and send a note to hi@nicokatzen.com.