Family Display Board · Setup

Start by connecting your family's calendars — Google, Outlook, Yahoo, iCloud, or any calendar link — plus town and community sources like a school feed or the city's Facebook page. Then fill in the rest of the form, click Generate files, and follow the save checklist at the bottom. Nothing you type ever leaves this page — there is no server, no upload, no account.

1 · Connect your calendars

The board's biggest panels are the week calendar and “Around Town” — they stay up to date by themselves once you connect the calendars your family already uses. Pick where each calendar lives, paste its share link, and give it a name you'll recognize. Not sure where to find the link? Open “Where do I find this link?” under each row.

How this works (30 seconds)

You paste a private “subscription link” for each calendar. When you finish, this page hands you two files: config.js and sync/sources.json. A small sync script (sync/calendar-sync.cjs) runs on the computer that powers the board, follows those links a few times an hour, and refreshes two plain files the board reads — that's why your links and passwords never appear in the board itself. Full steps are in the checklist at the bottom.

2 · Community & external sources

Local happenings that live somewhere else: the city or school calendar, a church, a sports league. If it offers an iCal / ICS / webcal link, paste it here and it flows into “Around Town” automatically. Facebook pages don't offer feeds — connect the page anyway and the board keeps it on the checklist for you to add its big events by hand (step 7).

3 · Your family

The name shown in the board header, and the people it belongs to. Colors are picked for you — click a swatch to change one. “Everyone” is added automatically for shared events. Birthdays & anniversaries added below repeat every year on their own — when one is close, the board shows a small “Next up” line under the week.

4 · Home base

Used for the live weather panel (open-meteo — free, no account). A city name is enough; coordinates make it slightly more precise.

5 · Weekly rhythm

Things that happen every week — church, practices, work nights, small group. Times are optional (leave both blank for an all-day note). If a calendar you connected already has one of these, the board shows it once — remove the manual copy whenever you like.

6 · Chores & tasks

Tap-to-check-off chores. Daily and weekly ones reset themselves when the next cycle starts.

7 · Around town — events to pin (optional)

Local happenings you want to pin by hand — farmers markets, festivals, parades. Anything you connected in step 2 flows in automatically; if a pinned event matches a connected one (same day + name), the pinned one wins. “One date” events disappear on their own the day after they pass.

8 · Dinner plan

One line per night. Once you fill in at least one, blank nights show “TBD”; leave them all blank to skip the dinner plan.

9 · Message board (optional)

Short notes for each other. You can always add more later by editing config.js.

Finishing up — save these two files

  1. config.js — save it next to your board's index.html (replace the sample one). That's everything from this form.
  2. sources.json — save it inside the board's sync/ folder, next to calendar-sync.cjs. It holds your private calendar links and stays on your computer.
  3. Test the connections — open Terminal in the board folder and run node sync/calendar-sync.cjs --check. You'll get one line per calendar: [ok] means it read your events; [FAIL] tells you which link to re-copy.
  4. Fill the board — run node sync/calendar-sync.cjs (no flags). It writes the two feed files the board reads; reload the board and your week + “Around Town” are live.
  5. Keep it fresh — the README shows how to run the sync automatically every half hour, so your calendars update themselves from then on.

No calendars to connect yet? Leave step 1 blank and skip step 2 — the board works fine with just the hand-entered items, and you can connect calendars any time by coming back to this page.

Preview the generated config.js
Preview the generated sync/sources.json

Generated files use the same format as the samples — you can fine-tune anything by hand afterwards.