Link Menu System · self-hosted link portal
Your team's start page,
never a dead end.
A responsive grid of the links your organization actually uses — set as everyone's browser start page. Edit it in place, no CMS. And a tiny canary router makes sure a laptop off the office network never lands on “page not found.”
how it works
Two small pages. One reliable start page.
Link Menu System is two cooperating PHP pages over flat-file JSON — no database, no framework, no build step. One is the portal your team sees; the other is a router that decides which portal they can actually reach.
The portal
A categorized grid of link panels, server-rendered from config.json. Set it as the
new-tab / start page and every device opens to the same curated launchpad.
The canary router
The page you actually set as the start URL. It silently sends in-house devices to the internal portal and off-network devices to a public fallback — so a start page is never a 404.
Just files
All state is JSON on disk. Drop the folder on any PHP host, no dependencies to install. Portable, auditable, trivial to back up.
inline admin
Edit the page on the page.
Log in and the portal itself becomes the editor — there's no separate CMS to learn. Everything saves straight back to the JSON.
Edit in place
Double-click a link, heading, banner, or setting to edit it. Add links and panels inline.
Drag to reorder
Rearrange links within a panel and panels within the grid by dragging. Layout saves silently.
Hide, don't delete
Stage planned changes with a per-panel hide toggle; hidden panels vanish for users, stay visible to you.
Fluid grid
Fills the window and steps down a column at a time as it narrows. Set max columns and width to taste.
One admin account
First-run setup creates a single bcrypt-hashed admin. Sessions gate every edit endpoint.
Themeable
Optional themes/{name}.css and a card-effect toggle. Seeded with a sensible default.
the canary router · live demo
The off-network 404, solved.
Staff devices are set to open the internal portal as their start page. Take the laptop home and that internal address is unreachable — “page not found” on every new tab. The router fixes it by probing for a canary: a tiny image that exists only on the internal server. Try both outcomes below.
You're in-house
The image came back, so the internal server is reachable. Redirect straight to the internal portal.
You're off-network
The image errored or never arrived. Fall back to the public URL — a status page, intranet login, or anything you choose. Never a dead page.
Demoing the internal network — now run the router and watch where it sends you:
The network buttons just set which canary state the router probes — they don't navigate. “Live demo: the router” then visits the router in that state (opens a new tab); the portal link works either way.
download
Grab it and self-host.
Unpack on any PHP-capable web host. Configuration is generated on first run and edited in place; the bundle ships code and assets only.