bun installCreate and deploy the Edge App:
screenly edge-app create --name google-calendar --in-place
bun run deploy
screenly edge-app instance createThe app accepts the following settings via screenly.yml:
| Setting | Description | Type | Default |
|---|---|---|---|
access_token |
OAuth access token for Google Calendar API. For testing only — in production, tokens are fetched dynamically via the Screenly integration. | optional | - |
calendar_id |
Google Calendar ID to display events from (e.g. primary or your@gmail.com) |
optional | primary |
calendar_mode |
View mode: schedule, weekly, or daily |
optional | schedule |
override_locale |
Override the default locale (e.g. fr, de) |
optional | en |
override_timezone |
Override the default timezone (e.g. America/New_York). Defaults to the system timezone if left blank |
optional | - |
display_errors |
Display errors on screen for debugging purposes | optional | false |
sentry_dsn |
Sentry DSN for error tracking and monitoring | optional | - |
bun install # Install dependencies
bun run dev # Start development serverUpdate mock-data.yml with your access_token and calendar_id.
bun testGenerate screenshots at all supported resolutions:
bun run screenshotsScreenshots are saved to the screenshots/ directory.
This app uses the Google Calendar API (not iCal/ICS) and requires a Google OAuth access token. In production, Screenly manages the OAuth flow automatically.
To connect your Google account:
- Go to the Integrations page in Screenly.
- Click + Connect next to Google Calendar.
- Follow the OAuth consent flow to grant Screenly access to your Google Calendar data.
Once connected, the app will fetch and refresh the access token automatically.
- Open Google Calendar.
- In the left sidebar, hover over the calendar you want, click the ⋮ menu, then Settings and sharing.
- Scroll down to Integrate calendar.
- Copy the Calendar ID (e.g.
primaryoryour@gmail.comfor the primary calendar, or a longer ID likeabc123@group.calendar.google.comfor shared calendars). - Use this value as your
calendar_idsetting.