Morning check-in
My sports watch data as my own morning page, local and read-only.
- Year
- 2026
- Role
- Setup, hardening and design of the page
- Type
- Tool
- Technology
- MCP, Python, SQLite, Jinja2, Playwright, scheduled tasks
Starting point
The sports watch collects health data every day, and it stays locked inside the manufacturer's app.
Goal
A page of my own every morning with what matters for the day, without handing the data over.
Approach
- Access: A local open-source MCP server for Garmin data. I set it up and limited it to read-only access with an allowlist.
- Page: From it, a morning page is generated automatically with a greeting, the weather for Zurich, a suggestion for the day, a readiness ring and figures for sleep, HRV trend, Body Battery and stress.
- Schedule: A scheduled task rebuilds the page every morning.
Decisions
- Local instead of cloud. The data stays on my device.
- Read-only. The allowlist permits no write access.
- A page instead of an app. HTML from a template is enough and opens anywhere.
Privacy
The data stays local and the server may only read. Only sample data is shown here, never real health values.
Result
A morning page that appears without me doing anything. Below is a small replica with sample data to try out.
Morning check-in with sample data
Sample data
Images
-
Enlarge image
The whole morning page, with sample data
Technology
MCP, Python, SQLite, Jinja2, Playwright, scheduled tasks
What I learned
With personal data, I set the permissions first: read only, stay local. Only then do I build.