Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
7378c5c
feat(edge-apps): redesign calendar app using plain HTML/CSS/TS
nicomiguelino Mar 2, 2026
4da6a58
Merge remote-tracking branch 'origin/master' into feat/overhaul-calen…
nicomiguelino Mar 10, 2026
e19cc98
fix(calendar): resolve linting errors and refactor weekly-calendar-view
nicomiguelino Mar 11, 2026
a2a0e26
Merge branch 'master' into feat/overhaul-calendar-app
nicomiguelino Mar 11, 2026
c66a6fa
fix(calendar): update "This week" title styling and remove unused CSS…
nicomiguelino Mar 12, 2026
f26f441
fix(calendar): update day header and time label styles
nicomiguelino Mar 12, 2026
be385e2
fix(calendar): fix current time indicator clipping and header alignment
nicomiguelino Mar 12, 2026
dac88b4
Merge branch 'master' into feat/overhaul-calendar-app
nicomiguelino Mar 17, 2026
b25193a
chore(calendar): add CORS proxy server script to dev workflow
nicomiguelino Mar 17, 2026
984a542
feat(calendar): improve weekly calendar view layout and event display
nicomiguelino Mar 17, 2026
fd33b8a
feat(calendar): use Screenly theme color for accent and header styling
nicomiguelino Mar 17, 2026
b02aa8e
chore(calendar): rename app from calendar-new to calendar
nicomiguelino Mar 17, 2026
cfacec2
chore(calendar): add categories to manifest files
nicomiguelino Mar 17, 2026
a15ffd2
feat(calendar): add daily calendar view and refactor shared utilities
nicomiguelino Mar 17, 2026
3477378
feat(calendar): add schedule view and fix timezone-aware time slots
nicomiguelino Mar 17, 2026
25f9f22
docs(calendar): update README with correct settings and structure
nicomiguelino Mar 17, 2026
78118dc
test(calendar): update screenshot tests for all three calendar modes
nicomiguelino Mar 18, 2026
8e74d54
chore(calendar): fix icon path and remove unused static asset
nicomiguelino Mar 18, 2026
937b36c
feat(calendar): replace Vue app with Web Components implementation
nicomiguelino Mar 18, 2026
7d06b84
Merge branch 'master' into feat/overhaul-calendar-app
nicomiguelino Mar 18, 2026
66d77aa
chore(calendar): add white Screenly logo to screenshot tests
nicomiguelino Mar 18, 2026
60f9ed0
fix(calendar): address code review comments
nicomiguelino Mar 18, 2026
74a49d0
feat(google-calendar): migrate to vanilla TS + web components archite…
nicomiguelino Mar 18, 2026
fd2dca4
fix(google-calendar): correct icon URL path in manifests
nicomiguelino Mar 18, 2026
a3e8498
fix(google-calendar): fix screenshot tests and regenerate screenshots
nicomiguelino Mar 18, 2026
c33966f
refactor(calendar): extract shared utilities to edge-apps-library
nicomiguelino Mar 18, 2026
cf43713
refactor: consolidate calendar views and clean up types
nicomiguelino Mar 19, 2026
c299a29
chore: add screenshots/*.png to .gitignore
nicomiguelino Mar 19, 2026
f93d8ed
docs(google-calendar): rewrite README to reflect Google Calendar API …
nicomiguelino Mar 19, 2026
df1c8fb
Potential fix for pull request finding
nicomiguelino Mar 19, 2026
87d935b
fix(google-calendar): replace import.meta.dirname with fileURLToPath
nicomiguelino Mar 19, 2026
16da13f
fix(edge-apps-library): fix event positioning and reduce weekly view …
nicomiguelino Mar 19, 2026
0bdd599
feat(outlook-calendar): migrate to vanilla TS + web components archit…
nicomiguelino Mar 19, 2026
d2b49d0
fix(outlook-calendar): add $top param to avoid truncated Graph API re…
nicomiguelino Mar 19, 2026
eaadea4
chore(outlook-calendar): remove old Vue implementation
nicomiguelino Mar 19, 2026
7a463b1
fix(outlook-calendar): use IANA timezone names in screenshot mock dat…
nicomiguelino Mar 19, 2026
7d320f9
fix(outlook-calendar): set calendar_id default to empty string
nicomiguelino Mar 19, 2026
c06d64f
fix(calendar): let refreshToken throw so initTokenRefreshLoop backoff…
nicomiguelino Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions edge-apps/calendar/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
node_modules/
dist/
*.log
.DS_Store
screenshots/*.png
1 change: 1 addition & 0 deletions edge-apps/calendar/.ignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules/
9 changes: 0 additions & 9 deletions edge-apps/calendar/.vscode/extensions.json

This file was deleted.

82 changes: 44 additions & 38 deletions edge-apps/calendar/README.md
Original file line number Diff line number Diff line change
@@ -1,62 +1,58 @@
# Screenly Calendar App

## Prerequisites

- Bun (v1.2.2+)
- Screenly Edge App CLI (v1.0.3+)

## Getting Started

We need to initialize the necessary dependencies and build the source
code first so that a `dist` directory can be created. This is essential as a manifest file
(which defaults to `screenly.yml`) and an `index.html` file is needed.

```bash
bun install
bun run build
screenly edge-app create \
--name=EDGE_APP_NAME \
--in-place
```

## Create an Edge App Instance via CLI

```bash
screenly edge-app instance create --name=EDGE_APP_INSTANCE_NAME
```

## Deployment

Create and deploy the Edge App:

```bash
screenly edge-app create --name calendar --in-place
bun run deploy
screenly edge-app instance create
```

See [the section on Getting the iCal URL](#getting-the-ical-url) for instructions on how to get the iCal URL.
Configure the required settings:

```bash
screenly edge-app setting set ical_url=<YOUR_ICAL_URL>
screenly edge-app setting set bypass_cors=true
screenly edge-app settings set ical_url=<YOUR_ICAL_URL>
```

## Configuration

| Setting | Description | Type | Default |
| ------------------- | ------------------------------------------------------------------------------------------------------ | -------- | ---------- |
| `ical_url` | iCal feed URL for your calendar (required) | secret | - |
| `calendar_mode` | View mode: `schedule`, `weekly`, or `daily` | optional | `schedule` |
| `bypass_cors` | Enable CORS bypass for iCal URLs that require it | optional | `true` |
| `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 | - |
| `theme` | Visual theme: `light` or `dark` | optional | `light` |
| `display_errors` | Display errors on screen for debugging purposes | optional | `false` |
| `sentry_dsn` | Sentry DSN for error tracking and monitoring | optional | - |

## Development

Install the dependencies for the first run:
Install dependencies:

```bash
bun install
```

Run the following command to start the development server:
Start the development server:

```bash
bun run dev
```

This will start the development server via the [Screenly CLI](https://github.com/Screenly/cli) and opens the app in the browser.

See [the section on Getting the iCal URL](#getting-the-ical-url) for instructions on how to get the iCal URL.
Update `mock-data.yml` with your `ical_url` and set `bypass_cors` to `true`.

Update `mock-data.yml` and update the values of `ical_url` and `bypass_cors` with the URL of the iCal feed you want to use and `true` respectively.
See [Getting the iCal URL](#getting-the-ical-url) for instructions.

## Linting and Formatting

Expand All @@ -65,17 +61,27 @@ bun run lint
bun run format
```

## Testing

```bash
bun test
```

## Screenshots

Generate screenshots at all supported resolutions:

```bash
bun run screenshots
```

Screenshots are saved to the `screenshots/` directory.

## Getting the iCal URL

- Go to your [Google Calendar](https://google.com/calendar).
- On the left sidebar, under "My calendars", select the calendar you want
to use.
- Click on the three dots on the right side of the calendar and select
"Settings and sharing".
- Scroll down until you see "Secret address in iCal format".
Click on the copy button to the right.
- A "Security warning" will appear, saying that
"[you] should not give the secret address to other people".
Click "OK" to continue.
- The secret address will be copied to your clipboard, which you can use
into the Edge App settings.
- On the left sidebar, under "My calendars", select the calendar you want to use.
- Click on the three dots on the right side of the calendar and select "Settings and sharing".
- Scroll down until you see "Secret address in iCal format". Click on the copy button to the right.
- A "Security warning" will appear — click "OK" to continue.
- The secret address will be copied to your clipboard, which you can use in the Edge App settings.
Loading
Loading