A Homepage That Isn't a Google Doc of Bookmarks
Setting up Glance, a self-hosted dashboard, to replace the dozen tabs.

Sometimes I opened the same seven tabs. Hacker News, a couple of subreddits, GitHub releases for four repos I depend on, a Twitch tab to see who’s live. None of that needs to be seven tabs. It needs to be one page that already has the answer.
The Problem
Bookmarks or pinned tabs don’t solve this. A bookmark still costs a click and a page load, and browsers are bad at grouping “things I check every day” separately from “things I read once.”
What I wanted was boring: one page, self-hosted, config in a text file, no account.
The Solution
Glance is exactly that. It’s a single Go binary, shipped as a Docker image, that renders a dashboard from a YAML file. No database, no build step, no JS framework to keep patched.
The project ships its own docker-compose.yml, so there’s nothing to write. Make sure Docker is running, then docker compose up -d and it’s up.
The config is where the actual value is:
- type: rss limit: 10 feeds: - url: https://selfh.st/rss/ - url: https://samwho.dev/rss.xml
- type: releases repositories: - glanceapp/glance - go-gitea/gitea - immich-app/immich
- type: weather location: Kyiv, UkraineWidgets for RSS, Hacker News, Lobsters, Reddit, GitHub releases, Twitch, YouTube channels, market tickers, weather. Enough that my morning check-in fits on one screen instead of a tab bar.
Why I Kept It
The part that matters daily isn’t the widget list, it’s that config changes are picked up live. Edit home.yml, save, refresh the browser. No restart, no redeploy. Only .env changes need the container recreated, and that’s rare — it’s just secrets like API tokens for higher GitHub rate limits.
That live-reload loop is what makes it a dashboard I actually iterate on instead of one I set up once and never touch. Swap a subreddit, add a repo to the releases widget, adjust it in thirty seconds.
It is not a smart dashboard. It does not learn what I like or summarize anything. It is a page that shows me what I would have checked manually, minus the checking.