A simple info screen that runs fully in the browser, fetches calendar via CalDAV and weather data from https://open-meteo.com/
Find a file
koehr fe476f5767
All checks were successful
Deploy / deploy (push) Successful in 26s
error handling and notifications
2026-08-12 15:43:28 +02:00
.forgejo/workflows move to pnpm because there is no bun, and it is all just annoying 2026-08-09 16:56:13 +02:00
.vscode a minimal vue weather app 2026-08-06 01:21:18 +02:00
public okay, signed it 2026-08-09 19:16:34 +02:00
src error handling and notifications 2026-08-12 15:43:28 +02:00
.editorconfig a minimal vue weather app 2026-08-06 01:21:18 +02:00
.gitattributes a minimal vue weather app 2026-08-06 01:21:18 +02:00
.gitignore Calendar, overall style improvements 2026-08-07 23:01:11 +02:00
.oxfmtrc.json a minimal vue weather app 2026-08-06 01:21:18 +02:00
.oxlintrc.json a minimal vue weather app 2026-08-06 01:21:18 +02:00
ARCHITECTURE.md clean up old name 2026-08-08 17:33:56 +02:00
bun.lock interactive config 2026-08-09 16:18:33 +02:00
env.d.ts a minimal vue weather app 2026-08-06 01:21:18 +02:00
eslint.config.ts a minimal vue weather app 2026-08-06 01:21:18 +02:00
index.html pwa 2026-08-09 17:16:26 +02:00
package.json interactive config 2026-08-09 16:18:33 +02:00
pnpm-lock.yaml move to pnpm because there is no bun, and it is all just annoying 2026-08-09 16:56:13 +02:00
README.md update manifest with all the things 2026-08-09 17:45:58 +02:00
tsconfig.app.json a minimal vue weather app 2026-08-06 01:21:18 +02:00
tsconfig.json a minimal vue weather app 2026-08-06 01:21:18 +02:00
tsconfig.node.json a minimal vue weather app 2026-08-06 01:21:18 +02:00
tsconfig.vitest.json a minimal vue weather app 2026-08-06 01:21:18 +02:00
vite.config.ts a minimal vue weather app 2026-08-06 01:21:18 +02:00
vitest.config.ts a minimal vue weather app 2026-08-06 01:21:18 +02:00

VueView

VueView is a lightweight, browser-based info screen built with Vue.js. Designed to run on any display, like a spare monitor or a wall-mounted tablet. It presents at-a-glance information like the current time, weather conditions, and upcoming calendar events in a clean, minimal interface. Nothing more, nothing less. No backend required. No cloud service. VueView runs privately, entirely client-side.

Screenshot

Screenshot

Services

Weather

VueView uses OpenMeteo to fetch weather data. OpenMeteo has a generous free tier of 10k requests per day, that should not be reached so easily, even with multiple clients running in parallel. VueView updates weather data roughly every ten minutes, so 144 times per day.

Calendar

VueView supports DAV via tsdav, which should make it possible to use Apple, Google, Fastmail, Nextcloud, Baikal, ZOHO and many more calendars. Credentials are currently very minimal (only username, password) and set up via .env (so for setting it up, the application needs to be rebuild). In the future, if people need, this might be changed.

Caveats

Because VueView runs in the browser, your calendar needs to support CORS. Mine (self-hosted Baikal) doesn't, but I was able to make my webserver handle the CORS stuff. Check the Wiki.

Acknowledgements

The font used is Comfortaa and is licensed under the SIL Open Font License.

The weather icons are the static versions of Meteocons.

Development

This project uses bun by default, but every other modern JS runtime should do it.

Prepare and run dev environment

bun install
bun dev

Type-Check, Compile and Minify for Production

bun run build

Run Unit Tests with Vitest

bun test:unit

Lint with ESLint

bun lint