Cade Beckner
Homelab interface · the live landing page

Marauders

The page my homelab opens to: every service in one place, with a health summary that only says what it can actually see. This is the current version, running on sample data.

The current landing page Sample-data recreation Open full screen ↗

A recreation, not a screenshot: the deployed theme and status script running on invented numbers, with the artwork replaced by original stand-ins, so the live site looks different. Click a hall's title to fold it. Links are switched off.

Interface

A hall, not a grid: four groups in balanced columns over candlelit artwork. Quiet cards that only gain brass edges on hover and focus.

Navigation

Each hall folds from its title. In the real thing every card opens its service; in this demo the links are switched off.

Customizations

About 650 lines of theme CSS and a 10 KB status script on top of the open-source Homepage dashboard. The layout, group names and configuration are mine.

What it reads

A web check, Proxmox's own state and the UniFi network widget, folded into one honest badge per card.

Where it runs

In a container (CT104) on pmox, the Proxmox host in the homelab, next to the reverse proxy and the second Pi-hole.

See it in the homelab →
What it doesstatus badges, the health line, plain-word counts
  • One honest status per service. A script reads each card's own signals (the web check, the Proxmox state, the network widget) and paints one labelled badge: Healthy, Running, Paused, Offline or Unknown. It never estimates, and a service I turned off on purpose shows as Paused, not as a failure.
  • A health line that goes stale on purpose. "10 connected · 1 paused · 0 need attention", with an updated-at time that turns into a warning if no fresh answer has arrived for two minutes.
  • Plain words for Proxmox. "4 of 4 LXC running" instead of a bare fraction, so a stopped VM is not mistaken for a fault.
  • A hall, not a grid. Four groups in three balanced columns over candlelit artwork, with quiet cards that only gain brass edges on hover and focus.

Also: the Castle

Experimental prototype

An experimental prototype, kept here as a record of an idea I explored: four houses, four rooms, and a ⌘K search called Portkey. Custom TypeScript, no framework. It is not the current implementation; the Great Hall above is. The Castle was never shipped as the landing page and has not changed since Oct 19.

Also a recreation: invented readings, and original stand-in artwork instead of the preview's own.

Working The entrance: four doors, one per part of the homelab.

Open the Castle full screen ↗

Great Hall vs. Castlewhat each is, status, what is custom
Great HallCastle
What it isHomepage, heavily themed, with a custom status scriptA custom TypeScript front end with a Python Proxmox adapter
StatusThe current implementation, the live landing pageAn experimental prototype, not shipped
Last changedNov 7, 2026Oct 19, 2026
What is customThe theme (about 650 lines of CSS), the status script (about 10 KB of JavaScript), the layout, naming and configurationThe front end (about 49 KB of TypeScript), the adapter (about 6 KB of Python), the structure, copy and room design
Built onHomepage, an open-source dashboardNothing at runtime: no framework, no dependencies
How it evolvedtwo threads, from the record that survives

Two threads. This is the part of the record that survives on the server, file dates and named backups, so it shows what changed and when, not necessarily when each idea began. Drag through them.

Oct 15, 2026 · Great Hall

A stock Homepage, first configuration

The earliest files and backups I still have show a plain Homepage install with its default config: bookmarks, Docker and Kubernetes stubs. Nothing themed yet.

Oct 16, 2026 · Great Hall

The wizard theme arrives

Named backups show the first themed versions ("wizard-theme", then "great-hall"), and the first service cards for Pi-hole, Proxmox and UniFi, with a few fix-and-retry steps along the way.

Oct 17, 2026 · Castle

The Castle begins

A separate, from-scratch front end starts the same evening: TypeScript source, an nginx container, a Python adapter for read-only Proxmox data, then the room artwork over the following hours. Versions 0.2 through 0.6 follow within a day.

Oct 19, 2026 · Castle

Castle v0.8.0, four workspaces

The latest Castle build gives each house its own room: Engine Room, Floo Network, Pensieve and Owlery. Its own notes call it a review build, not yet shipped, and it has not changed since. It runs as a preview alongside the real landing page.

Oct 23, 2026 · Great Hall

Sections renamed

A backup named "section-names" marks the day the service groups were renamed. They now read the Grand Staircase, the Restricted Section, The Burrow and the Chamber of Secrets.

Nov 3, 2026 · Great Hall

ChatGPT shortcut

A shortcut joins the header; a backup was taken just before the change.

Nov 5, 2026 · Great Hall

Refine, polish, tagline

A run of checkpoints: refine, polish, tagline, then a final desktop version with a written restore note. This is where the header, health summary, status badges and the current tagline land.

Nov 7, 2026 · Great Hall

Latest edit to the live theme

The theme stylesheet and the status script were last edited this evening. The version in the demo above is that one.

Dates come from file timestamps and named backup folders on the server, so they are accurate to the day. There is no git history.


Credits and provenance

Open the full list
HomepageOpen-source dashboard by gethomepage (GPL-3.0). The base of the Great Hall. Its compiled stylesheet and fonts are included in the demo; see notices.
Service iconsFrom the open dashboard-icons set; group icons from Material Design Icons. Product logos belong to their owners.
Hall artwork and crestsBoth demos use original artwork drawn for this portfolio: a candle-lit banner, four room scenes, and crests that show what each room does (a network, a gear, a drop, a bell). The deployed projects use different artwork, which is not shown here.
Wizarding-world namesUsed as a naming theme. This is a personal, non-commercial project and is not affiliated with or endorsed by the rights holders.