jsaumer / homepage
git clone https://github.com/jsaumer/homepage.git
A printed-menu theme for Homepage: three columns of services on dark paper, with dotted leaders to their status, a dated masthead with a three-day forecast, and figures set in Spectral. CSS and JS only, no fork.
—
stars, 24h
+40
stars, 7 days · #1,071
+40
stars, 30 days · #7,272
40
★ total · +40% this week
4
forks · 0 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageCSS
License—
Created2026-10-15 (5d ago)
Last push5d ago
Watchers0
OwnerUser
GitHub topics
Links
- GitHub: github.com/jsaumer/homepage
- Homepage: https://www.reddit.com/r/selfhosted/comments/1x5vaov/dashboard_wednesday_customized_homepage/
- Releases · Issues · Hacker News mentions
README excerpt
# Carte Noir A printed-menu theme for Homepage: one page, three columns, every service set as a line on a menu with a dotted leader to its status, and its figures underneath in small type. Dark paper, brass accents, the Spectral typeface, a dated masthead with a three-day weather outlook, and a closing line that tells you whether everything is up. It is a full re-layout done in `custom.css` and `custom.js`, so it needs no fork of Homepage. There are no image files: the lamp-glow background is CSS, and the service icons come from Homepage's icon CDN. *The demo services with made-up figures. First shared in a Dashboard Wednesday thread on r/selfhosted.* ## How this was made This theme was built with Claude, Anthropic's AI model (Claude Opus 5.5), working in Claude Code. I set the direction: I asked for new layouts, picked the printed-menu design from Claude's mockups, chose the variations, typeface and details, and tried each change on my own dashboard. Claude wrote the code: the CSS and JavaScript, the widget configuration, the demo services and mock data, and most of this README. ## Fork it I built this for my own dashboard and may not update it often, so please fork it and make it your own rather than waiting on changes here. Pull requests are welcome, but I can't promise a quick reply. The demo widgets read their figures from `demo/mock.json` in this repository. If you change those figures in your fork, point the `mock.json` links in `services.yaml` at your fork. ## What's here | File | What it does | |---|---| | `custom.css` | The whole theme | | `custom.js` | Masthead (date and Open-Meteo weather), closing line, spelled-out durations, sizes in GB/TB | | `settings.yaml` | Settings the theme relies on, and the group order that makes the columns | | `services.yaml` | 46 demonstration services across the nine sections. Runs as is with made-up figures; each widget's real configuration sits beside it as a comment | | `demo/mock.json` | The made-up figures the demo widgets read | | `widgets.yaml` | Empty on purpose: the masthead replaces Homepage's information widgets | | `bookmarks.yaml` | Example "Elsewhere" bookmarks group | Built on Homepage v2.5.0 and checked in Chromium at desktop, tablet and phone widths. It uses CSS `:has()`, so it needs a browser from 2023 or later. ## Install 1. Copy `custom.css` and `custom.js` into your Homepage config folder (the one mounted at `/app/config`). Empty your `widgets.yaml` too (or use the one here), or Homepage's resource and search widgets sit above the title. 2. Merge these into your `settings.yaml`. The theme expects them: [code] 3. List **every** group in `layout:` in `settings.yaml`. That order fills the columns top to bottom, left to right. Bookmark groups can be mixed in. 4. Reload the page. Homepage picks up config changes without a restart. ## Try the demo Drop all five YAML files plus `custom.css` and `custom.js` into an empty config folder and the page fills with made-up figures straight awa