We signed up for eSPACE almost a year ago and have been using it for room and resource reservations. The eSPACE daily view looks like an old Google Calendar and isn't pretty to look at. I wanted an easy way to see what's happening on site during the week.

I already had a monitor mounted in the rack in my office, and the data was already in eSPACE. The missing piece was something to connect the two, so I built one: eSPACE Events Kiosk, a display for eSPACE that can also run on TVs in church lobbies.

What it does

eSPACE Events Kiosk shows today's events for one campus on a TV in three columns: Time, Event and Room. The event happening now is highlighted, and the one after it is tagged as next.

Each TV just opens a URL like /board/main in a full-screen browser. Any device with a modern browser can be the display: a Raspberry Pi, a mini PC, a Mac mini or a smart TV's built-in browser.

How it works

A small server pulls today's events from the eSPACE API each morning, then checks again every 15 minutes for changes throughout the day. One server should be able to run every campus. I have it running in Docker, but it's designed to run on Windows, macOS or Linux too, including a Raspberry Pi. It's written in TypeScript with no runtime dependencies beyond Node.

My monitor sits in a semi-private office, but lobby TVs would sit in public spaces with nobody watching whether they work, which shaped a few decisions:

  • The eSPACE API key stays on the server. The TVs only receive the finished schedule.
  • It never reads contact names, emails or phone numbers from eSPACE, so they can't end up on a screen. Pending and denied bookings are hidden by default, cancelled ones always, and private events can be hidden too.
  • It caches the last good pull to disk, so the boards keep working if eSPACE or the internet goes down.
  • A /health endpoint reports whether every campus has pulled today, so an RMM or uptime monitor can keep an eye on it.
  • Each board reloads overnight, so updates reach the TVs without anyone touching them.
  • Colors and fonts are set in config.json, so it can match the church's branding without code changes.

Testing it

I wanted to test it without an eSPACE API key, so I added a demo mode with sample events. It still needs a config.json to run, though, so I used:

git clone https://github.com/spiff888/espace-events-kiosk.git
cd espace-events-kiosk
cp config.example.json config.json
docker run -d --name campus-board -p 8080:8080 \
  -v "$PWD/config.json:/config/config.json:ro" \
  ghcr.io/spiff888/espace-events-kiosk:latest

Then open http://<server-name>:8080/ in a browser for a link to each campus board.

Once that worked, I set it up with real data: API key, campus config, running it in Docker and pointing the monitor at it.

Feedback

eSPACE Events Kiosk is MIT-licensed. If you try it at your church, I'd like to hear how it went. Bugs and ideas go in GitHub Issues.

eSPACE Events Kiosk is an unofficial project and isn't affiliated with or endorsed by Smart Church Solutions or eSPACE.