All work

Web Lab Niagara — in-house2025In development

HomePal

A self-hosted touchscreen family wall calendar, built as a DIY alternative to Skylight. It merges several Google calendars into one glanceable month view with no accounts, no logins, and no tokens to expire.

The HomePal wall display: a large clock and date, a month calendar grid with two colour-coded calendars, and an Up Next agenda panel down the right-hand side.
HomePal on a phone

What we did

  • Product design
  • Front-end development
  • Serverless integration
  • Hardware/kiosk setup

Built with

  • HTML/CSS/JS
  • Cloudflare Pages Functions
  • iCal
  • Android WebView

The brief

Commercial family calendar displays are expensive, subscription-bound, and want an account for every household member. The goal was the same glanceable wall calendar with none of that — running on hardware we chose, with data we already had in Google Calendar.

What we built

A static display that merges multiple Google calendars into a single month view with an Up Next agenda alongside it, deliberately read-only — a wall display has nothing to gain from being editable.

It started with no accounts at all: each calendar came in through its own private iCal link, so there was no OAuth and no token to expire quietly six months later. That path is still there, and it’s still the one that survives neglect. Google sign-in was added alongside it later as the easier on-ramp, because “paste this secret URL” is a lot to ask of someone who just wants the calendar on the wall.

Browsers won’t fetch those feeds directly — the Google endpoints don’t send permissive CORS headers. A small Cloudflare Pages Function does the fetching server-side and is locked to Google hosts only, so it can’t be repurposed as an open proxy.

The frontend has no framework and no build step, which keeps it dependable on low-powered display hardware.

On the wall

It runs as a wall-mounted touchscreen via a thin Android WebView wrapper on a Chromecast with Google TV driving a USB touch monitor.

Start a project

Let's build something.

A new site, or an old one that isn’t pulling its weight — either way, a conversation costs you nothing.

Tell me what you've got.

A new site, or an old one that isn't pulling its weight. I read every one of these myself.